2008-12-10 20 views
8

मैं कई मॉडल है और सभी एक उपयोगकर्ता से संबंधित मॉडल की एक क्वेरीसमूह वापस करना चाहते हैं, मैं अगर यह संभव है कई मॉडल से एक क्वेरीसमूह वापस जाने के लिए सोच रहा हूँ?मॉडल में Django Queryset?

+0

डुप्लिकेट: http://stackoverflow.com/questions/313137/using-django-how-can-i-combine-two-queries-from-separate-models-into-one-query –

उत्तर

8

मुझे लगता है कि आप मानते हैं कि आप प्रत्येक मॉडल से उपयोगकर्ता से संबंधित सभी ऑब्जेक्ट्स की एक एकल क्वेरीसेट वापस करना चाहते हैं।

क्या आपको एक क्वेरीसेट की आवश्यकता है या सिर्फ एक पुनरावृत्त है? AFAIK, विषम qs संभव नहीं है। हालांकि, आप आसानी से एक सूची, एक जंजीर इटरेटर (itertools) या एक जनरेटर जो आप चाहते हैं करने के लिए वापस कर सकते हैं। यह मानता है कि उपयोगकर्ता का संदर्भ देने वाले मॉडल समय से पहले ज्ञात हैं। डिफ़ॉल्ट related_name मानते हुए, संबंधित क्वेरीसमूह विशेषताओं मॉडल का नाम के माध्यम से उपयोगकर्ता उदाहरण से पहुँचा जा सकता है:

qs = getattr(user, '%s_set' % model_name.lower()); 
बेशक

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

3

आपके मॉडल में संबंधित_नाम कीवर्ड तर्क सेट के साथ संबंध फ़ील्ड (ForeigKey और ManyToManyField) होना चाहिए। दस्तावेज़ीकरण here देखें।

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