Как фильтровать объекты по количеству объектов ForeignKey БЕЗ использования необработанного SQL? - PullRequest
2 голосов
/ 02 февраля 2012

Возможно ли это наконец в Джанго?Без этой функции использование ORM довольно странно.

Ответы [ 2 ]

2 голосов
/ 02 февраля 2012

На самом деле в документах агрегации Django есть два раздела, называемые фильтрацией по аннотациям и order_by(), которые должны получить то, что вам нужно:

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)
1 голос
/ 02 февраля 2012

Вы можете сделать это, используя функцию анотации. Здесь вы можете найти пример

И документы здесь

...