परिणाम जो आप उम्मीद कर रहे हैं वह कच्चे प्रश्न के साथ वास्तव में हासिल करना वास्तव में आसान है और वास्तव में, मेरा मतलब शुद्ध डीजेंगो के साथ हासिल करना वाकई मुश्किल है।
from django.db.models import FloatField, ExpressionWrapper, F
template = '%(function)s(%(expressions)s AS FLOAT)'
fv1 = Func(F('value1'), function='CAST', template=template)
fv2 = Func(F('value2'), function='CAST', template=template)
ew = ExpressionWrapper(fv1/fv2, output_field = FloatField())
q = MyModel.objects.order_by('-value1').annotate(res = ew)
आप इसे सुरुचिपूर्ण होने का आरोप नहीं लगाएंगे लेकिन यह माइस्क्ल और पोस्टग्रेस्क्ल दोनों पर काम करता है।
कुछ पृष्ठभूमि प्रदान करने के लिए। गोलाकार डेटाबेस द्वारा पूर्णांक विभाजन कर रहा है क्योंकि आपके पास फ़ील्ड इन्स हैं। यदि आप दशमलव विभाजन चाहते हैं तो आपको उन्हें दशमलव तक डालना होगा। दुर्भाग्य से कास्टिंग Django के साथ बहुत आसान नहीं है।
पोस्टग्रेस्क्ल में फ्लोट करने के लिए वास्तव में एक शानदार तरीका है। value1 :: float लेकिन इसे अंदर django (कम से कम जहां तक मुझे पता है) से उपयोग नहीं किया जा सकता है
क्या आपने 'float (F ('value1'))' 'प्रयास किया है? – trantu
'एफ' अभिव्यक्तियों के बारे में बात यह है कि पायथन मूल्यों के बारे में नहीं जानता है, लेकिन ऑपरेशन (इस मामले में विभाजन) को डेटाबेस में हाथ रखता है। PostgreSQL और MySQL के लिए, पूर्णांक विभाजन का परिणाम एक पूर्णांक में होता है, जैसे कि पाइथन 2.x – schwobaseggl
@trantu float() तर्क एक स्ट्रिंग या संख्या होना चाहिए, 'एफ' – tim