[Django]-Get count of related model efficiently in Django

26👍

You’re right, it’s wasteful to fetch all that data from the database if all you want to do is get the count. I suggest annotation:

threads = (Thread.objects.annotate(Count('comments', distinct=True))
                         .annotate(Count('upvotes', distinct=True)))
for thread in threads:
    print(thread.comments__count)
    print(thread.upvotes__count)

See the annotation documentation for more information.

Leave a comment