让我们首先看看我有什么。
在我的models.py
中,我有:
class Category(models.Model):
name = models.CharField(max_length=50, unique=True)
class Parent(models.Model):
class Meta:
abstract = True
category = models.ForiegnKey(Category, related_name="%(class)s_set")
name = models.CharField(max_length=50)
class Foo(Parent):
foo = models.PositiveInteger(default=1)
class Bar(Parent):
bar = models.CharField(max_length=20)
class Baz(Parent):
baz = models.BooleanField(default=True)
如您所见,我有3个模型子类Foo
,Bar
和Baz
,它们从抽象模型Parent
继承。
每个唯一的category
只能有一个parent_set
,foo_set
或bar_set
之一。 (假设到目前为止,我有3个类别,它们的唯一名称分别为baz_set
,foo
和bar
。)
我的baz
中有以下观点:
views.py
在我的class FooListView(ListView): # template: foos/foo_list.html
model = Foo
class BarListView(ListView): # template: bars/bar_list.html
model = Bar
class BazListView(ListView): # template: bazs/baz_list.html
model = Baz
def index(request):
return render('index.html, context={"categories": Category.objects.all()})
中,我有:
urls.py
现在在我的url_patterns = [
path('foo/list', FooListView.as_view(), name='foo_list'),
path('bar/list', BarListView.as_view(), name='bar_list'),
path('baz/list', BazListView.as_view(), name='baz_list'),
]
中,为每个index.html
渲染category
(可以是parent_set
,foo_set
或{{1} })与该bar_set
相关。我不知道如何才能优雅地做到这一点。
我不愿意做的是这(除了丑陋的条件语句外,还要求我在上下文中添加FOO,BAR和BAZ):
baz_set
我喜欢做的事情是这样的:
category
对此有何想法?
谢谢