2011-01-28 14 views
13

से सभी संबंधित कई से अधिक ऑब्जेक्ट प्राप्त करें मेरे पास संबंधों का वर्णन करने वाले कई से अधिक क्षेत्रों के साथ, अंतरसंबंधित Django मॉडल की एक मोड़पूर्ण भूलभुलैया है।एक Django QuerySet

क्वेरीज़ से संबंधित मॉडल के अद्वितीय सदस्यों की सूची प्राप्त करने का सबसे साफ तरीका क्या है?

यदि मेरे पास समूह मॉडल के लिए इंगित करने वाले कई समूहों के साथ एक आइटम मॉडल है।

अगर मैं आइटम की एक क्वेरीसमूह, 'आइटम' की है, मैं यह कैसे मिलता है:

groups = items[0].groups.all().values_list('name', flat=True) 

लेकिन पूरे सेट के लिए? क्या मुझे उन सभी के माध्यम से पुन: प्रयास करने की आवश्यकता है और सेट()। Intersect()?

उत्तर

17

एक समाधान 2 प्रश्नों का उपयोग करना है।

आप देखेंगे कि आपके items अंक में एक Item करने के लिए सभी Group रों क्वेरी करने के लिए रिवर्स संबंधों का उपयोग कर सकते हैं।

groups = groups.objects.filter(item__in=items).distinct().values_list('name', flat=True) 
+0

पर्याप्त रूप से सुरुचिपूर्ण। धन्यवाद। – samurailawngnome

+2

आपको 'value_ true' के पैरामीटर के रूप में 'flat = True' का उपयोग करने के लिए उपयोगी भी मिल सकता है, जो नामों के tuples की सूची के बजाय परिणाम की सूची के रूप में परिणाम वापस कर देगा। – gorus

+0

@gorus - अपडेट किया गया। मुझे यह मजेदार लगता है कि मैंने मूल पोस्ट से फ्लैट हटा दिया क्योंकि मुझे इसे अलग से भ्रमित कर दिया गया। –

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