के साथ रिकॉर्ड द्वारा Django Query फ़िल्टरिंग क्या एक Django क्वेरी फ़िल्टर करने का कोई आसान तरीका है जिसके आधार पर कॉलम में अधिकतम/न्यूनतम मान है? मैं अनिवार्य रूप से thesequestions पूछ रहा हूं, लेकिन Django के ORM के विशिष्ट संदर्भ में।अधिकतम कॉलम वैल्यू
उदा।
कहें कि मेरे पास एक मॉडल है जो सभी के फोन नंबरों के ऐतिहासिक मूल्यों को संग्रहीत करने के लिए डिज़ाइन किया गया है।
class Person(models.Model):
name = models.CharField(max_length=100)
phone = models.CharField(max_length=100)
created = models.DateTimeField(auto_now_add=True)
रिकॉर्ड के साथ:
Person(name='Jim',phone='123-456-9870', created=datetime(2005,1,2,4,2))
Person(name='Jim',phone='329-802-9870', created=datetime(2006,9,2,7,8))
Person(name='Sue',phone='324-345-3450', created=datetime(2008,7,4,6,1))
अब कहते हैं कि मैं हर किसी के सबसे हाल ही में फोन नंबर खोजने के लिए करना चाहता था।
एसक्यूएल में, मैं आमतौर पर अधिकतम मूल्यों की गणना करने के लिए एक सबक्वेरी उपयोग करने के लिए होगा:
SELECT p1.name, p1.phone, p1.created
FROM person_person p1, (
SELECT name, MAX(created) AS max_created
FROM person_person
GROUP BY name
) AS p2
WHERE p1.name = p2.name AND p1.created = p2.max_created
वहाँ Django में किसी भी तंत्र है कि इस को आसान बनाने में कर सकता है?
मैं अपने बैकएंड पर PostgreSQL का उपयोग कर रहा हूं, इसलिए पोस्टग्रेएसक्यूएल विशिष्ट कार्यक्षमता पर भरोसा करने वाले किसी भी विचार या समाधान उपयोगी होंगे।
ऐसा लगता है कि django पर आप जो भी खोज रहे हैं वह तब तक नहीं कर सकता जब तक कि आप कच्चे क्वेरी sql का उपयोग न करें। [यह] जांचें (https://docs.djangoproject.com/en/dev/ref/models/querysets/#distinct)। चूंकि इस समय आप एक ऑर्डर_बी ('बनाया') जोड़ते हैं जो बनाई गई क्वेरी में चयन में जोड़ा जाता है, तो विशिष्ट कुछ भी नहीं करेगा। – Hassek