2010-03-04 14 views
13

मॉडल 1 में मॉडल 2 के लिए विदेशीकी है। और मॉडल 2 में एक विदेशीकी (मॉडल 3, शून्य = सही, खाली = सही) मॉडल 3 है। डिफ़ॉल्ट रूप से, जब मैं Model1 पर select_related() का उपयोग करता हूं, तो मॉडल 3 को null = True के कारण नहीं चुना जाता है। मैं select_related() को एक विदेशी_की का पालन करने के लिए कैसे मजबूर कर सकता हूं जिसमें शून्य = सही है?select_related() को विदेशीकिज़ का चयन करने के लिए कैसे बल दें, जिसमें शून्य = सही विशेषता है?

model1s = Model1.objects.all().select_related('model2', 'model2__model3') 

इस एक ही रास्ता है:

एक ही रास्ता मैं के बारे में सोच सकते हैं स्पष्ट रूप से इन विदेशी कुंजी का चयन करने के लिए है?

उत्तर

14

हां, यही तरीका है कि आप संबंधित आइटम को नल = ट्रू के साथ चुनने के बारे में जानेंगे।

docs for select_related से सीधे:

आप select_related के लिए पारित फ़ील्ड की सूची में किसी भी ForeignKey या OneToOneField संबंध का उल्लेख कर सकते। Ths में विदेशी कुंजी शामिल हैं जिनमें शून्य = सही है (डिफ़ॉल्ट select_related() कॉल के विपरीत)।

क्या इस कारण को करने के लिए आपको एक अलग तरीके की आवश्यकता है? यदि नहीं, तो आपके पास यह पहले से ही सही है।

+0

मेरे पास कई विदेशीके फ़ील्ड हैं जो शून्य = सही पर सेट हैं। मैं उन्हें सभी सूचीबद्ध नहीं करना चाहूंगा। लेकिन मुझे लगता है कि मुझे करना होगा। –

+1

आप फिर से सही हैं। यह बहुत सारे टाइपिंग की तरह प्रतीत होता है लेकिन यह तकनीकी रूप से एक कोने उपयोग के मामले का थोड़ा सा है। हालांकि सभी पर select_related करने में सक्षम नहीं होने से बेहतर। यदि आप कुछ अलग के साथ आते हैं तो कृपया अपना खुद का जवाब जोड़ें। – istruble

+0

इस के लिए खोज की उम्र बिताएं .. प्रश्न और उत्तर के लिए धन्यवाद! – John

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