2013-10-30 5 views
8

에서 집계를 사용하여 나는최소 값 필드의 이름을 가져옵니다 장고

class Choclate(models.Model): 
    name = models.CharField(max_length=256) 
    price = models.IntegerField() 

그래서 내가 그렇게 lowest price을 얻기 위해, 을 lowest price 값을 갖는 필드 이름을 얻으려면 아래 같은 일부 필드가있는 모델을 가지고 값은, 우리는 어떻게 field name을 얻을 그래서 결국

from django.db.models import Avg, Max, Min 

choclates = Choclate.objects.all() 
lowest_price = choclates.aggregate(Min('price')) 

Aggregations를 사용하여 아래와 같이 할 수있는 장고 낮은 가격 값에 관련이?

답변

8

당신은 첫번째 1이 갖는 필드 이름 당신이

>>> from django.db.models import Min 
>>> Choclate.objects.filter().values_list('name').annotate(Min('price')).order_by('price')[0] 
(u'First1', 10) 
>>> 

를 원하는 정확한 것을 얻기 위해 코드 아래에 시도 할 수 가장 낮은 값 가격 = 10.

+0

k 감사합니다. 내가 원하는 모든 가격 값이 같다면 4 개의 choclate 레코드가 있다면 4 개의 레코드가 모두 같은 가격 값인지 확인해야한다는 것을 알 수있는 방법이 있습니다. 가능한거야? –

+0

옙 확실히, 나는 위의 코멘트/의심을 찾았습니까? –

+0

만약 내가 db에서 모든 4 레코드를 가져온 후 다른 조건을 넣을 시도합니다 .i 찾지 못했습니다 및이 특정 쿼리 –

1

Min을 위치 인수로 전달하면 필드 이름은 price__min입니다. 그렇지 않으면 키워드 인수 (예 : aggregate(my_min=Min('price')))로 전달하면 인수와 동일한 이름 (이 경우 my_min)을 사용할 수 있습니다. Docs

관련 문제