2013-10-30 12 views
8

में एकत्रीकरण का उपयोग कर रहा तरह नीचेन्यूनतम मान फ़ील्ड नाम जाओ Django

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

तो मैं फ़ील्ड नाम lowest price मूल्य होता है, आदेश lowest price प्राप्त करने के लिए इतना प्राप्त करना चाहते हैं कुछ क्षेत्रों के साथ एक मॉडल है मूल्य, हम, Aggregations

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

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

का उपयोग कर तो अंत में कैसे field name प्राप्त करने के लिए नीचे दिए गए की तरह कर सकते हैं Django में सबसे कम कीमत मूल्य से संबंधित है?

उत्तर

8

आप सटीक बात पाने के लिए नीचे दिए गए कोड की कोशिश कर सकते आप चाहते हैं

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

first1 क्षेत्र होने का नाम है कीमत = 10 जो न्यूनतम मूल्य है।

+0

k धन्यवाद जो मैं चाहता हूं, यह भी पता लगाने का कोई तरीका है कि यदि सभी मूल्य मान बराबर हैं, तो मेरा मतलब है कि अगर 4 चॉकलेट रिकॉर्ड हैं, तो मुझे यह जांचना होगा कि सभी चार रिकॉर्ड समान मूल्य मान हैं या नहीं यह संभव ? –

+0

हाँ यकीन है, मुझे आशा है कि आपको मेरी उपरोक्त टिप्पणी/शक मिलेगा? –

+0

अगर मैं कोशिश करूंगा तो मैं डीबी से सभी 4 रिकॉर्ड्स लाने के बाद कुछ और स्थिति रखूंगा। मुझे नहीं मिला और इसके लिए विशिष्ट क्वेरी नहीं मिली –

1

यदि आप Min को स्थितित्मक तर्क के रूप में पास करते हैं, तो फ़ील्ड का नाम price__min है। अन्यथा, यदि आप इसे कीवर्ड तर्क के रूप में पास करते हैं, यानी aggregate(my_min=Min('price')), तो यह तर्क के समान नाम के साथ उपलब्ध होगा, इस मामले में my_minDocs

संबंधित मुद्दे