Возможно ли это в Django? Без этой функции использование ORM выглядит странно.Как фильтровать объекты по количеству объектов ForeignKey БЕЗ использования необработанного SQL?
2
A
ответ
2
Есть на самом деле два раздела агрегации документации Django называемых filtering on annotations и 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
Поиск хорошее место начать. Я думаю, что это задавали не один раз. –
И каждый ответ (который я видел) включает в себя необработанный SQL. – SuitUp
естественно после того, как я ответил ... рядом с дубликатом http://stackoverflow.com/questions/1889176/filtering-the-aggregate-in-the-django-orm – istruble