2012-02-02 3 views
2

これは最終的にDjangoで可能ですか?この機能がなければ、ORMの使用はちょっと変です。Raw SQLを使用せずにForeignKeyオブジェクトの数でオブジェクトをフィルタリングする方法は?

+1

検索が良い場所です始めること。私はこれが複数回尋ねられたと思います。 –

+0

そしてすべての答え(私が見た)は生のSQLを含んでいます。 – SuitUp

+0

私は答えた後自然に...重複した近くhttp://stackoverflow.com/questions/1889176/filtering-the-aggregate-in-the-django-orm – istruble

答えて

2

を見つけることができますあなたが必要なものを取得する必要があり、その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

これは、アノテート機能を使用して行うことができます。 HereあなたはDjangoの集約ドキュメント内の2つのセクションでは、実際に存在する例

とドキュメントhere

関連する問題