Django क्वेरी में फ़िल्टर से कम या बराबर कैसे करें?


175

मैं प्रत्येक उपयोगकर्ता प्रोफ़ाइल में एक कस्टम फ़ील्ड द्वारा उपयोगकर्ताओं को फ़िल्टर करने का प्रयास कर रहा हूं जिसे प्रोफ़ाइल कहा जाता है। इस क्षेत्र को स्तर कहा जाता है और 0-3 के बीच पूर्णांक होता है।

यदि मैं समान का उपयोग करके फ़िल्टर करता हूं, तो मुझे अपेक्षित स्तर के साथ उपयोगकर्ताओं की एक सूची मिलती है:

user_list = User.objects.filter(userprofile__level = 0)

जब मैं कम से कम उपयोग करके फ़िल्टर करने का प्रयास करता हूं:

user_list = User.objects.filter(userprofile__level < 3)

मुझे त्रुटि मिली:

वैश्विक नाम 'userprofile__level' परिभाषित नहीं है

वहाँ <या> द्वारा फ़िल्टर करने का एक तरीका है, या मैं गलत पेड़ को भौंक रहा हूं।


2
@ BresresBotond हालांकि डॉक्स बहुत अच्छे लगते हैं - संरचना और लेआउट इतना खराब है कि एक सीधा लिंक के बिना, वे सभी बेकार हैं
RunLoop

@ BéresBotond दुर्भाग्य से वह लिंक अब मर चुका है :(
dKen

डॉक्टर के लिए कार्य लिंक: docs.djangoproject.com/en/1.11/ref/models/querysets/#gt
गौरव पांडेय

जवाबों:


337

इससे कम या इसके बराबर:

User.objects.filter(userprofile__level__lte=0)

से बड़ा या बराबर:

User.objects.filter(userprofile__level__gte=0)

इसी तरह ltसे कम और gtअधिक से अधिक के लिए। आप उन सभी को प्रलेखन में पा सकते हैं ।


2
वाह, यह तेज था :)। यह कम या बराबर के लिए बहुत अच्छा काम करता है, लेकिन कैसे कम से कम के बारे में? (userprofile__level__lt = 3) काम करने के लिए प्रतीत नहीं होता है
फिंगलिश

1
ऐसा होता है; लेकिन किसी भी स्थिति में, आप फ़िल्टर (__ lt) के बजाय बाहर (__ gte) भी कर सकते हैं।
लक्ष्मण प्रसाद

2
और यह मत भूलो कि __
andilabs

Im को यह त्रुटि मिल रही है -> {FieldError} AutoField के लिए असमर्थित लुकअप 'स्तर' या उस फ़ील्ड में शामिल होने की अनुमति नहीं है।
अरविंद आर पिल्लई
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.