如何在Django模板中获取模型的对象数?
问题描述:
我为我的Django应用我获取的所有对象为特定的模型,像这样:如何在Django模板中获取模型的对象数?
secs = Sections.objects.filter(order__gt = 5)
我通过这个varbiles到我的模板,我可以访问模型像section.name
,section.id
的所有属性等
有一个模型叫做Books
它有一个FK Sections
模型。当我遍历模板中的secs
变量时,如何访问每个段的计数?像{{ sec.Books.count }}
?
谢谢
答
如果Books
有一个ForeignKey到Sections
,那么Django会自动创建章节回书籍反向关系,这将被称为books_set
。这是一个管理员,这意味着你可以使用.filter()
,.get()
和.count()
- 你可以在你的模板中使用它们。
{{ sec.books_set.count }}
(顺便说一句,你应该使用单数名词用型号名称,而不是复数 - 的Book
代替Books
该模型的实例保存信息一点书,并不多。)
答
另外根据Daniel的说法,Django会自动创建反向关系(如Daniel所述),除非您使用related_name参数覆盖它们的名称。在您的特定情况下,你会是这样的:由
class Book(models.Model):
section = models.ForeignKey(Section, related_name="books")
然后你就可以访问部分的书算在模板:
{{ sec.books.count }}
正如你在你的问题暗示。