2016-02-24 4 views
7

मैं इस सवाल फिर से पूछ रहा हूँ (it was asked back in 2009),select_related() और मान() को कैसे गठबंधन करें? (2016)

हम जानते हैं कि वहाँ क्वेरीसमूह, की एक values() विधि एक foreignkey है जब (लेखक, उदाहरण के लिए), यह परिणाम की तरह:

[{ 'author_id':3, ... }, ...] 

मैं चाहता हूँ एक परिणाम की तरह:

[{ 'author':{'name':'dave',...}, ... }, ...] 

कुछ चांग है Django के नए संस्करणों में एड?

मैं क्वेरी सेट को सूचियों और उपन्यासों के संयोजन में परिवर्तित करना चाहता हूं, क्या यह संभव है?

मैं फिर इस वस्तु को ले जाऊंगा और इसे क्रमबद्ध करने के लिए इसे एक बड़ी वस्तु में रखूंगा। यही कारण है कि मैं इसे तुरंत क्रमबद्ध नहीं करना चाहता हूं।

उत्तर

5

आप आवश्यकता select_related() उपयोग करने के लिए बिना values() के माध्यम से संबंधित क्षेत्रों तक पहुँच सकते हैं (केवल इन बाद के देखने के बिना प्राप्त किया गया हो जाएगा):

[{'author__id': 1, 'author__name': 'Dave'}, {...}] 

हैं:

MyModel.objects.values('author__id', 'author__name') 

यह निम्नलिखित संरचना वापस आ जाएगी आपको इसे घोंसले वाली संरचना में चाहिए जिसे आपको बाद में बदलना होगा।

ध्यान दें कि एम 2 एम संबंधों के लिए, यह प्रति एम 2 एम संबंध में एक सूची प्रविष्टि देता है, इसलिए शायद वांछित प्रभाव नहीं है। लेकिन OneToOne/ForeignKey संबंधों के लिए यह ठीक काम करता है।

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