सबक्वेरी
ऐसे प्रश्नों की आवश्यकता है जिनका तुरंत मूल्यांकन नहीं किया जाता है ताकि बाहरी क्वेरी चलने तक उनका मूल्यांकन स्थगित किया जा सके। get()
बिल में फिट नहीं है क्योंकि इसे तुरंत निष्पादित किया जाता है और Queryset
. के बजाय ऑब्जेक्ट इंस्टेंस देता है ।
हालांकि, filter
. को प्रतिस्थापित करना get
. के लिए और फिर एक [:1]
taking लेना टुकड़ा काम करना चाहिए:
StatByHour.objects.filter(hour_of_day=OuterRef('hour_filter')).values('hour_of_day')[:1]
नोट करें कि OuterRef<में फ़ील्ड संदर्भ कैसे होता है /ए> एक चर के बजाय एक स्ट्रिंग शाब्दिक है।
इसके अलावा, उपश्रेणियों को एक एकल स्तंभ और एक पंक्ति (जैसा कि वे एक ही फ़ील्ड को सौंपा गया है) को वापस करने की आवश्यकता है, इसलिए values()
और ऊपर का टुकड़ा।
साथ ही, मैंने Q
. में सबक्वेरी का उपयोग नहीं किया है अभी तक वस्तु; मुझे यकीन नहीं है कि यह काम करेगा। आपको सबक्वायरी आउटपुट को पहले एक एनोटेशन में सहेजना पड़ सकता है और फिर अपने फ़िल्टर गणना के लिए उसका उपयोग करना पड़ सकता है।