2012-11-20 4 views
3

내가 모델 장고 모델이의 합계의 최대를 찾을 수 있습니다. 이것을 수행 할 장고 방법이 있습니까? 아니면 내가 원시 SQL로 이동해야합니까 (경우에 같은 것을 할 것이다 "를 선택 최대 mymodel_table에서 (fieldA + fieldB)")? 사전에장고,이 개 필드 같은

덕분에 여기

+1

* 원시 SQL은 당신이 무엇을 제안하려고 mymodel_table에서 선택 최대 (fieldB + fieldC) ... – user1839352

답변

6

작동합니다 오히려 로터리 솔루션, Django aggregate queries with expressions에서 적응 :

MyModel.objects.extra(select={'sum':'fieldB + fieldC'}).order_by('-sum')[0] 

원래 비 작업 대답을 (장고 1.4, F()를 표현 특수 효과에서 작동하지 않음)

F() expressionsannotation/aggregation을 사용하면이 작업을 수행 할 수 있습니다. 나는 네가 원하는 것을 생각해.

from django.db.models import F, Max 
MyModel.objects.annotate(sum=F('fieldB') + F('fieldC')).aggregate(Max('sum')) 
+0

이지만은 AttributeError -'ExpressionNode 조회 ' – user1839352

+0

네 말이 맞아'개체가 어떤 속성이없는 '나를 수 있습니다. .. https://code.djangoproject.com/ticket/14030. http://stackoverflow.com/questions/10221422/django-aggregate-queries-with-pressions에서 솔루션을 사용해보십시오. 그게 효과가 있으면 알려주고 답을 업데이트하겠습니다. – acjay

+0

@ user1839352 : 지금 사용해보기 – acjay