Django如何在一个视图中呈现抽象模型类的子类

时间:2018-07-30 13:23:50

标签: python django django-templates django-views

让我们首先看看我有什么。

在我的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个模型子类FooBarBaz,它们从抽象模型Parent继承。

每个唯一的category只能有一个parent_setfoo_setbar_set之一。 (假设到目前为止,我有3个类别,它们的唯一名称分别为baz_setfoobar。)

我的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_setfoo_set或{{1} })与该bar_set相关。我不知道如何才能优雅地做到这一点。

我不愿意做的是这(除了丑陋的条件语句外,还要求我在上下文中添加FOO,BAR和BAZ):

baz_set

我喜欢做的事情是这样的:

category

对此有何想法?

谢谢

0 个答案:

没有答案