如何使用原始SQL不使用ForeignKey对象的数量来过滤对象?

时间:2012-02-02 16:55:32

标签: python django orm django-aggregation

Django终于可以了吗?没有这个功能,使用ORM有点奇怪。

2 个答案:

答案 0 :(得分:2)

Django聚合文档实际上有两个部分叫做filtering on annotationsorder_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 :(得分:1)

您可以使用anotate功能。 Here你可以找到一个例子

文档here