2013-04-24 6 views
0

두 모델이 있습니다.쿼리 세트에 개수 추가

class Category(models.Model): 
    name = models.CharField() 

    @property 
    def element_count() 
     return Element.objects.filter(name=self.name).count() 


class Element(models.Model): 
    name = models.CharField() 
    categories = models.ManyToManyField(Category) 

이 범주에 연결된 모든 요소의 개수를 알고 싶습니다. 이 함수는 템플릿과 뷰에서 잘 작동하지만 쿼리 세트에서 직접 얻을 수있는 방법이 있습니까?

Category.objects.all()

답변

3

같은 경우이 시도 :

>>> from django.db.models import Count 
>>> q = Category.objects.all().annotate(element_count = Count('element')) 

>>> print q[0].element_count 
223 

문서 : https://docs.djangoproject.com/en/dev/topics/db/aggregation/

+0

감사합니다. 그것은 아주 잘 보인다. – Azd325

+0

어떻게 가상 필드로 추가 할 수 있는지 알고 있습니까? – Azd325

+0

가상 필드 란 무엇입니까? 'element_count'는 실행 된 SQL 쿼리에서 별칭이됩니다. –