Как я могу получить количество объектов для модели в шаблонах Django?
Я являюсь моим приложением Django. Я извлекаю все объекты для определенной модели следующим образом:
secs = Sections.objects.filter(order__gt = 5)
Я передаю эти varbiles своим шаблонам, и я могу получить доступ ко всем свойствам модели, например section.name
, section.id
и т.д.
Существует модель под названием Books
, которая имеет FK для модели Sections
. Когда я повторяю переменную secs
в моем шаблоне, как я могу получить доступ к количеству книг для каждого раздела? Что-то вроде {{ sec.Books.count }}
??
Спасибо
Ответы
Ответ 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 }}
Как вы указали в своем вопросе.