2012-04-15 10 views
1

このタグで:Djangoの条件数

visible_tags = Tag.objects.filter(visible=True,taggit_taggeditem_items__content_type=ContentType.objects.get_for_model(Action)).order_by('name').annotate(action_count=Count('action')) 

これは私だけではなく、現在、多くのアクションが提携しているが、どのように多く、このタグと提携している不完全なアクション知りたいことを除いて動作します。

私は次のことを試してみました:

visible_tags = Tag.objects.filter(visible=True,taggit_taggeditem_items__content_type=ContentType.objects.get_for_model(Action)).order_by('name').filter(action__complete=False).annotate(action_count=Count('action')) 

しかし、これは非常に私はそれが何をする必要があるか行いません。 不完全なアクションの数にどのように注釈を付けることができますか?

+2

これはうまくいくようです。それはあなたに何を与え、あなたの期待とどのように違うのですか? – chandsie

答えて

1

期待以上に多くなる場合があります。 SQL Djangoはあなたのために生成知るprint queryset.query、ほか

visible_tags = Tag.objects.filter(visible=True, taggit_taggeditem_items__content_type=ContentType.objects.get_for_model(Action), 
action__complete=False # Here 
).order_by('name').annotate(action_count=Count('action')) 

:したがって最初のもので第二のフィルターを入れて質問Are chained QuerySet filters equivalent to defining multiple fields in a single filter with the Django ORM? に非常に似て、余分なインナーをご紹介.filterが参加チェーンからです。