2012-09-13 12 views
10

मेरे पास MySQL दुर्भाग्य से Django 1.4.1 के साथ उपयोग किया गया डेटाबेस है। विशिष्ट फ़ंक्शन केवल POSTGRESQL के लिए काम कर रहा है अगर मुझे यह सही लगता है।कई मूल्य प्राप्त करने के लिए Django MySQL विशिष्ट क्वेरी

मैं,

की तरह एक अलग क्वेरी से अधिक मान से मिलकर बनता है, जबकि केवल अलग एक बनाने के लिए है, यह एक POSTGRE के लिए काम करता है लेकिन MYSQL, के साथ नहीं, मुझे निम्न त्रुटि मिलती है;

खेतों पर DISTINCT इस डेटाबेस बैकएंड

staff = Staff.objects.order_by('person__full_name').distinct('person__full_name') 

तब मैं

staff = Staff.objects.values('person__full_name','staff_job_categories').distinct().order_by('person__full_name') 

की कोशिश की द्वारा समर्थित नहीं है लेकिन मैं अलग-अलग मान नहीं क्योंकि मैं भी कर्मचारी काम श्रेणियों मिलता है । लेकिन जब मैं इसे शामिल नहीं करता हूं तो मैं इसे सरणी के रूप में नहीं प्राप्त कर सकता था।

कोई विचार?

उत्तर

16

.distinct([*fields]) केवल पोस्टग्रेसएसक्यूएल में काम करता है।

distinct प्रलेखन

से यहाँ अंतर है। एक सामान्य विशिष्ट() कॉल के लिए, डेटाबेस प्रत्येक पंक्ति में प्रत्येक पंक्ति की तुलना करता है जब यह निर्धारित करता है कि कौन सी पंक्तियां अलग हैं। निर्दिष्ट फ़ील्ड नामों के साथ एक विशिष्ट() कॉल के लिए, डेटाबेस केवल निर्दिष्ट फ़ील्ड नामों की तुलना करेगा।

जैसा कि कहा गया है कि रिकॉर्ड में सभी फ़ील्ड चेक किए गए हैं। आपके मामले में अधिकतर संभावना है कि आप अलग-अलग फ़ील्ड मानों के साथ रिकॉर्ड प्राप्त कर रहे हैं (अधिक संभावना है कि यदि आप एकाधिक टेबल कई टॉमी या विदेशीकी संबंधों से पूछताछ करते हैं)।

सरणी के रूप में मजबूत है कि आप अपने पहले सवाल का उल्लेख कर सकते Django Query distinct values works but i cant use the query result

5
names = Staff.objects.order_by('person__full_name').values('person__full_name').distinct() 

आप अलग पूरा नाम दे देंगे, और आप अलग काम श्रेणियों प्राप्त करने के लिए इसी तरह की एक बात यह है कि ऐसा कर सकता है।

ये आपको मूल्यों की सूचियां देंगे, न कि वस्तुओं को स्वयं, बल्कि यदि मैं आपके प्रश्न को सही तरीके से समझता हूं तो मुझे लगता है कि ये आपको वह चाहिए जो आप चाहते हैं।

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