यहाँ मेरी डेटाबेस क्वेरी है:Django: का प्रयोग व्याख्या करते हैं, गणना और एक क्वेरीसमूह पर अलग
results = Attachments.objects.filter(currency='current').annotate(num_attachments=Count('article_id')).order_by("num_attachments").distinct('article_id')
क्वेरी नीचे के रूप में टूट इस प्रकार है (मैं इसे समझने के रूप में):
- पहले फिल्टर वर्तमान संलग्नक है जो "वर्तमान" हैं।
- फिर किसी निश्चित 'article_id' के साथ उन अनुलग्नकों की संख्या को गिनने के लिए।
- फिर प्रत्येक अटैचमेंट को अटैचमेंट की संख्या के साथ एनोटेट करने के लिए जिसमें आलेख_आईडी सामान्य है।
- फिर अनुलग्नकों की संख्या के आधार पर रैंक करने के लिए।
- फिर, सूची को अलग से अलग करना, ताकि प्रत्येक आलेख_आईडी मान के लिए एक अटैचमेंट ऑब्जेक्ट हो।
मैं इसे पोस्टग्रेएसक्यूएल पर चला रहा हूं, इसलिए Django docs के अनुसार, मैं एक फ़ील्ड के आधार पर अलग() चलाने के लिए ठीक हूं।
कोई त्रुटि जब मैं क्वेरी निष्पादित है, लेकिन जब मैं पुनरावृति या यहाँ तक कि परिणाम निम्न त्रुटि Django डिबग से फेंक दिया जाता है मुद्रित करने के लिए प्रयास करें:
NotImplementedError at /function/
annotate() + distinct(fields) not implemented.
इंटरैक्टिव शीघ्र से अधिक विस्तृत ट्रैस है :
File "<console>", line 1, in <module>
File "/Users/Pat/.virtualenvs/envsp/lib/python2.7/site-packages/django/db/models/query.py", line 118, in _result_iter
self._fill_cache()
File "/Users/Pat/.virtualenvs/envsp/lib/python2.7/site-packages/django/db/models/query.py", line 875, in _fill_cache
self._result_cache.append(self._iter.next())
File "/Users/Pat/.virtualenvs/envsp/lib/python2.7/site-packages/django/db/models/query.py", line 291, in iterator
for row in compiler.results_iter():
File "/Users/Pat/.virtualenvs/envsp/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 763, in results_iter
for rows in self.execute_sql(MULTI):
File "/Users/Pat/.virtualenvs/envsp/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 808, in execute_sql
sql, params = self.as_sql()
File "/Users/Pat/.virtualenvs/envsp/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 107, in as_sql
"annotate() + distinct(fields) not implemented.")
NotImplementedError: annotate() + distinct(fields) not implemented.
कोई भी जानता है कि यहां क्या हो रहा है?
सुंदर सीधे आगे लगता है। 'NotImplementedError' एक Django अपवाद है। यह कोड आपको यह बताने के लिए उठा रहा है कि आप इस समय 'एनोटेट' और 'विशिष्ट' (फ़ील्ड के साथ) को एक साथ जोड़ नहीं सकते हैं, जिसका अर्थ है कि यह अभी काम नहीं करता है। भविष्य में वे जो भी समस्याएं शामिल कर सकते हैं, वे काम कर सकते हैं, लेकिन अभी के लिए आप भाग्य से बाहर हैं। आप हमेशा 'कच्चे' का सहारा ले सकते हैं और जो भी चाहें कर सकते हैं। –
उपरोक्त कोड उदाहरण में आप एक डॉट खो रहे हैं "।" order_by और विशिष्ट फ़ील्ड के बीच। – Mikael
@Chris एक ही चीज़ को पूरा करने के लिए वैकल्पिक प्रश्न (कच्चे एसक्यूएल के अलावा) पर कोई विचार? – Pat