2011-01-06 12 views
5

अगर मैं निम्नलिखित मॉडल है:Select_related() पीछे की ओर संबंध - ऑटो मॉडल आबादी

class Contact(models.Model) 
    name = models.CharField(max_length=100) 
    ... 

class ContactAddress(models.Model) 
    line1 = models.CharField(max_length=100) 
    line2 = models.CharField(max_length=100) 
    ... 
    contact = models.ForeignKey(Contact) 

अब मैं सभी संपर्क हड़पने के लिए चाहते हैं और पता करने के लिए के लिए स्वत: आबादी। क्या सबसे अच्छा तरीका होगा यह करने का? मुझे अब तक का एकमात्र तरीका यह है कि मैं चाहता हूं कि संपर्कों को फ़िल्टर करें और प्रत्येक संपर्क के चारों ओर लूप करें और इसे Contact.addresses पर असाइन करें। मैं फिर टेम्पलेट के भीतर प्रत्येक संपर्क पते को आउटपुट करने के लिए इसका उपयोग करता हूं।

क्या ऐसा करने का कोई बेहतर तरीका है? Select_related() लगभग वही करता है जो मैं चाहता हूं, लेकिन ऐसा लगता है कि विपरीत दिशा में काम करने में सक्षम नहीं है।

इस पर आपकी सहायता के लिए अग्रिम धन्यवाद!

उत्तर

4

आप सही हैं, select_related केवल आगे काम करता है! अधिक कुशल रिवर्स लुकअप बनाने के लिए this देखें!

+0

बस स्पष्ट करने के लिए, आप केवल OneToOne फ़ील्ड पर 'select_related' के साथ लुकअप को उलट सकते हैं - यह एफके या एम 2 एम के साथ काम नहीं करेगा –

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