我正在尝试重写我的 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 我知道对象。部分工作,但孩子们也会部分工作吗?我能想出一个丑陋的技巧:使用 relation_name 属性来命名所有关系子项。我想它会起作用,但这不是我想要的方向。
视图.py:
from django.views.generic.detail import DetailView
class ObjectDetailView(DetailView):
template_name = "detail.html"
网址.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'),
)