Подтвердить что ты не робот

Как я могу получить количество объектов для модели в шаблонах Django?

Я являюсь моим приложением Django. Я извлекаю все объекты для определенной модели следующим образом:

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

Я передаю эти varbiles своим шаблонам, и я могу получить доступ ко всем свойствам модели, например section.name, section.id и т.д.

Существует модель под названием Books, которая имеет FK для модели Sections. Когда я повторяю переменную secs в моем шаблоне, как я могу получить доступ к количеству книг для каждого раздела? Что-то вроде {{ sec.Books.count }}??

Спасибо

4b9b3361

Ответ 1

Если Books имеет значение ForeignKey для Sections, тогда Django автоматически создаст обратную связь из разделов обратно в книги, которая будет называться books_set. Это менеджер, который означает, что вы можете использовать .filter(), .get() и .count() на нем - и вы можете использовать их в своем шаблоне.

{{ sec.books_set.count }}

(Кстати, вы должны использовать уникальные существительные для имен вашей модели, а не множественные числа - Book вместо Books. Экземпляр этой модели содержит информацию для одной книги, не так много.)

Ответ 2

Кроме того, что сказал Даниэль, Django создает обратные отношения автоматически (как сказал Даниэль выше), если вы не переопределите их имена аргументом related_name. В вашем конкретном случае у вас будет что-то вроде:

class Book(models.Model):
    section = models.ForeignKey(Section, related_name="books")

Затем вы можете получить доступ к счетчикам разделов в шаблоне:

{{ sec.books.count }}

Как вы указали в своем вопросе.