2012-04-17 2 views
0

두 쿼리를 사용하지 않고 다음을 수행 할 수 있습니까?Django : foreignKey 값 또는 없음 필터

>>> c = Category.objects.all()[0] 
>>> len(Document.objects.filter(category=c)) 
3 
>>> len(Document.objects.filter(category=None)) 
55 
>>> len(Document.objects.filter(category__in=[c, None])) 
3 
+0

예상되는 결과는 무엇입니까? – aisbaa

+1

모든 카테고리에 대한 개수를 원한다면,'Document.objects.values ​​('category'). annotate (count = Count ('category')) order_by()' – agf

+0

실제로 카운트를 원하지 않았다. 그건 단지 설명을위한 것이 었습니다. –

답변

2

Q object을 사용하십시오.

from django.db.models import Q 
len(Document.objects.filter(Q(category=c) | Q(category=None))) 
+0

'queryset.count()' – agf

+0

@agf 어쨌든 queryset을 평가하려는 경우 실제로는 효과가 없습니다. – freakish

관련 문제