Я читаю зачатки annotating and aggregating и мне интересно, каким образом лучше выполнить следующую ситуацию:Простой Джанго Aggregation - Оптимизация
Вы хотите, чтобы подсчитать число авторов для каждой книги в QuerySet. Учебник предлагает следующие с annotate
:
Book.objects.annotate(Count('authors'))
Мой вопрос, почему это так, когда вы можете сделать это с модельными методами экземпляра:
#models.py
class Book(models.Model):
authors = models.ManyToManyField(Author)
def author_count(self):
return self.authors.count()
#views.py
books = Book.objects.all()
#template.html
{% for book in books %}
{{ book.author_count }}
{% endfor %}
ли одна ситуация лучше, чем другие? Есть ли преимущества оптимизации, которых я не хватает?