Django コードを書き直して、すべてのレベルで可能な限り汎用的にしようとしています。次のモデルがあるとします。
class Tvshow(models.Model):
pass
class Season(models.Model):
tvshow = models.ForeignKey(Tvshow)
class Episode(models.Model):
season = models.ForeignKey(Season)
テレビ番組にはシーズンがあり、シーズンにはエピソードがあります。簡単にするために、他のすべての情報を省略しました。
これらのオブジェクトの詳細ビューは、DetailView を使用して任意のモデルを処理できるようになりました。しかし、親または子のオブジェクトの関係も表示したいと思います。あなたがテレビ番組を見ているとしましょう。tvshow.season_set.all() を呼び出してこの情報を表示することはできません。これは、テンプレートがテレビ番組を扱っていることを認識していない (テレビ番組に季節があることも認識していない) ためです。代わりに、object.children_set.all() を実行できるようにしたいと考えています。
そうすれば、これら 3 つのモデルのいずれかを自分のビューにフィードでき、機能します。これは可能ですか?
ps私はオブジェクトを知っています。一部は機能しますが、子供たちの一部も機能しますか? 私が思いついた厄介なハックが 1 つあります。relation_name プロパティを使用して、すべてのリレーションの子に名前を付けます。うまくいくと思いますが、それは私が取りたい方向ではありません。
ビュー.py:
from django.views.generic.detail import DetailView
class ObjectDetailView(DetailView):
template_name = "detail.html"
urls.py
from tvshows.views import ObjectDetailView
from tvshows.models import Tvshow
urlpatterns = patterns('tvshows.views',
url(r'^(?P<pk>\d+)/$', ObjectDetailView.as_view(model = Tvshow), name='detail'),
)