2011-09-21 6 views
44

मेरे पास Employees नामक एक टेबल/मॉडल है और मैं एक क्वेरीसेट के रूप में एक ही फ़ील्ड की सभी पंक्तियां प्राप्त करना चाहता हूं।django मॉडल एकल फ़ील्ड का चयन

मैं जानता हूँ कि मैं इसे इस तरह से कर सकते हैं (आशा है कि मैं यह सही कर रहा हूँ भी):

emp_list = Employees.objects.get(all) 
emp_names = emp_list.eng_name 

सभी क्षेत्रों के लिए डेटाबेस और केवल एक का उपयोग कर क्वेरी चाहेंगे? क्या ऐसा करने का एक बेहतर (तेज़) तरीका है?

+0

"केवल एक का उपयोग करके" का क्या मतलब है? 'चयन *' के बजाय 'चयन करें''? –

उत्तर

83
Employees.objects.values_list('eng_name', flat=True) 

यह सभी eng_name एस की एक विस्तृत सूची बनाता है। आप प्रति पंक्ति एक से अधिक क्षेत्र चाहते हैं, आप एक फ्लैट सूची नहीं कर सकता: यह सूचियों की एक सूची बना देगा:

Employees.objects.values_list('eng_name', 'rank') 
+0

उत्तर के लिए धन्यवाद, अगर मैं केवल 1 या अधिक फ़ील्ड (सभी नहीं) चुनना चाहता हूं तो क्या होगा? – zentenk

+0

क्षमा करें, मुझे प्रश्न समझ में नहीं आता है। –

+1

कभी नहीं मिला मुझे दस्तावेज़ मिले, धन्यवाद! – zentenk

4

करने के लिए values_list रूप Danielmentions आप भी only (या defer उपयोग कर सकते हैं के लिए इसके अलावा

SELECT id, eng_name FROM employees 
:

Employees.objects.only('eng_name') 

यह एक एकल क्वेरी चलेंगे: विपरीत प्रभाव) केवल अपने आईडी होने वस्तुओं की एक क्वेरीसमूह और निर्दिष्ट क्षेत्रों पाने के लिए