I\'m my Django application I\'m fetching all the objects for a particular model like so:
secs = Sections.objects.filter(order__gt = 5)
I pa
Additionally to what Daniel said, Django creates reverse relationships automatically (as Daniel said above) unless you override their names with the related_name argument. In your particular case, you would have something like:
class Book(models.Model):
section = models.ForeignKey(Section, related_name="books")
Then you can access the section's books count in the template by:
{{ sec.books.count }}
As you intimated in your question.
If Books has a ForeignKey to Sections, then Django will automatically create a reverse relationship from Sections back to Books, which will be called books_set. This is a Manager, which means you can use .filter(), .get() and .count() on it - and you can use these in your template.
{{ sec.books_set.count }}
(By the way, you should use singular nouns for your model names, not plurals - Book instead of Books. An instance of that model holds information for one book, not many.)
As for a 2019 answer. I would suggest making use of related_name while making your ForeignKey to look like that:
section = models.ForeignKey(Section, on_delete=models.SET_NULL, related_name='books')
Then you can use it as follows:
{{ section.books.count }}
or
{{ section.books|length }}