2010-01-14 22 views
13

मैं संबंधित क्षेत्र से संपर्कों का एक क्वेरीसेट सॉर्ट करना चाहता हूं। लेकिन मैं नहीं जानता कि कैसे। मैंने इसे इस तरह से आजमाया, लेकिन यह काम नहीं करता है।django आदेश

foundContacts.order_by("classification.kam") 

वास्तव में एक टेम्पलेट में मैं contact.classification.kam माध्यम से किसी संपर्क की kam मूल्य उपयोग कर सकते हैं क्योंकि यह एक OneToOne रिश्ता है।

(सरलीकृत) मॉडल इस तरह दिखेगा:

class Classification(models.Model): 
    kam = models.ForeignKey(User) 
    contact = models.OneToOneField(Contact) 

class Contact(models.Model): 
    title = models.ForeignKey(Title, blank=True, null=True) 
    first_name = models.CharField(max_length=200) 
    last_name = models.CharField(max_length=200) 

उत्तर

22

यह होना चाहिए: http://docs.djangoproject.com/en/1.1/topics/db/queries/#lookups-that-span-relationships

:

foundContacts.order_by("classification__kam") 

यहाँ प्रश्नों कि रिश्तों अवधि बनाने पर Django डॉक्स के लिए एक कड़ी है

आप order_by संदर्भ में कुछ उदाहरण भी देख सकते हैं:
https://docs.djangoproject.com/en/1.6/ref/models/querysets/#django.db.models.query.QuerySet.order_by

+3

वाक्यविन्यास सही है, लेकिन इसका दृश्य बनाम टेम्पलेट के साथ कुछ लेना देना नहीं है। आप इस तरह के ऑर्डरिंग को टेम्पलेट में बिल्कुल नहीं कर सकते (क्योंकि टेम्पलेट सिंटैक्स आपको तर्कों के साथ फ़ंक्शन कॉल करने की अनुमति नहीं देता है)। लेकिन डबल-अंडरस्कोर सिंटैक्स का उपयोग सभी रिलेशनशिप ट्रैवर्सल * के भीतर * फ़ंक्शन कॉल - फ़िल्टर, एनोटेट, ऑर्डर_बी इत्यादि के लिए किया जाता है। जबकि सामान्य डॉट सिंटैक्स आपके ऑब्जेक्ट के लिए होता है और संबंधित ऑब्जेक्ट को संदर्भित करना चाहता है। –

+0

शब्द खराब था और मैंने इसे हटा दिया है। –

+0

ठीक है अब यह काम करता है। धन्यवाद! –

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