2

Is this finally possible in Django? Without this feature, using ORM is kinda strange.

istruble
  • 13,363
  • 2
  • 47
  • 52
SuitUp
  • 3,112
  • 5
  • 28
  • 41

2 Answers2

2

There are actually two sections in the Django aggregation docs called filtering on annotations and order_by() that should get you what you need:

books_w_author_count = Book.objects.annotate(num_authors=Count('authors'))

# just a filter by number of objects
books_w_author_count.filter(num_authors__gt=1)

# just ordering on the count
books_w_author_count.order_by('num_authors')

class Author(modules.Model):
   # ...

class Book(models.Model):
   # ...
   authors = models.ManyToManyField(Author)
istruble
  • 13,363
  • 2
  • 47
  • 52
1

You can this by using anotate function. Here you can find an example

And docs here

Aldarund
  • 17,312
  • 5
  • 73
  • 104