如何获取Django模板中模型的对象计数?

2024-05-02 18:24:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我是我的Django应用程序我正在获取特定模型的所有对象,如下所示:

secs = Sections.objects.filter(order__gt = 5)

我把这些变量传递给我的模板,我可以访问模型的所有属性,比如section.namesection.id,等等

有一个称为Books的模型对Sections模型具有FK。当我遍历模板中的secs变量时,如何访问每个部分的图书计数?类似于{{ sec.Books.count }}??

谢谢你


Tags: 对象djangoname模型gt模板应用程序属性
3条回答

至于2019年的答案。我建议在让你的ForeignKey看起来像这样的时候使用related_name

section = models.ForeignKey(Section, on_delete=models.SET_NULL, related_name='books')

然后您可以按如下方式使用它:

{{ section.books.count }} 

或者

{{ section.books|length }}

如果Books有一个指向Sections的ForeignKey,那么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 }}

正如你在问题中暗示的那样。

相关问题 更多 >