나는 통계의 번호를 가지고 있다면 나는Django, 카운트 쿼리를 함께 묶으시겠습니까?
have_x_many_males = Person.objects.filter(is_male=True).count()
have_x_many_gays = Person.objects.filter(is_gay=True).count()
have_x_many_roberts = Person.objects.filter(last_name_id='robert').count()
...
을 그러나 이것은 매우 비효율적이다 내 인구에 대한 통계의 무리를 얻고 싶은 경우에, 나는 관계
class Person(models.Model):
is_asian = models.BooleanField()
is_male = models.BooleanField()
is_gay = models.BooleanField()
last_name = models.ForeignKey('FamilyName')
is_happy = models.BooleanField()
class FamilyName(models.Model):
title = models.CharField(max_length=200, primary_key=True)
현재
가 있다고 가정하자 자랍니다.
쿼리를 모두 묶어서 한 번에 실행하고 목록이나 다른 것을 다시 얻을 수있는 방법이 있습니까?
>>> main_query = [query_1, query_2, query_3]
>>> main_query.execute()
{'have_x_many_males':5, ...}
정확히 내가 필요로하는 것은 고마워,하지만, 내가 뭘 원하는지 모르겠지만'Person' 객체 자체는 원한다. 'annotate()'다음에'values ()'를 그냥할까요? – AlanSTACK
@Alan 그래도 작동합니다. https://docs.djangoproject.com/en/1.10/topics/db/aggregation/#order-of-annotate-and-values-clauses를 참조하십시오. – serg