मैं है Django मॉडल का अनुसरण (टेबल 'ए' को मैप किया):Django क्वेरी - "मामला है जब" एकत्रीकरण समारोह के साथ
select avg(case
when (value > 0 and value <= 50) then 0
when (value > 50 and value < 70) then 50
else 100 end)
from A
where ...
:
class A(models.Model):
name = models.CharField(max_length=64, null=False)
value = models.IntegerField()
...
मैं शीर्ष पर निम्नलिखित सरल क्वेरी निष्पादित करना चाहते हैं
मैं कच्चे एसक्यूएल से बचने की कोशिश कर रहा हूं - इसे डीजेंगो के साथ कैसे कार्यान्वित किया जा सकता है (उपर्युक्त उदाहरण में मैं औसत का उपयोग कर रहा हूं, लेकिन वही प्रश्न अधिकतम, न्यूनतम, योग आदि के लिए भी प्रासंगिक है)?
मैं अतिरिक्त और कुल उपयोग करने की कोशिश:
extra(select={'avg_field': case_when_query})
और
aggregate(Avg('avg_field')),
लेकिन इतना अतिरिक्त क्षेत्र यहाँ नहीं किया जा सकता समेकित फ़ंक्शन केवल मॉडल क्षेत्रों के साथ काम करता है। यह django के साथ कैसे किया जा सकता है?
मदद
के लिए धन्यवाद
धन्यवाद। दुर्भाग्य से मैं इन मानों को डेटाबेस तालिका में संग्रहीत नहीं कर सकता क्योंकि "केस जब" मान गणना के आधार पर अलग-अलग हो सकता है जो मैं करना चाहता हूं। – Lin
@ एलआई: समझा। मैं देख सकता हूं कि यह उस मामले में क्यों काम नहीं करेगा। –
मदद के लिए फिर से धन्यवाद। आखिर में अतिरिक्त + मूल्यों का उपयोग करके मुझे वह परिणाम मिला जो मैं चाहता था। – Lin