2012-04-06 15 views
91

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

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

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

जब मैं का उपयोग कर फिल्टर करने के लिए कोशिश कम से कम:

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

मैं त्रुटि मिलती है :

global name 'userprofile__level' is not defined

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

+3

क्या आपने डीजेंगो में फ़िल्टर सिंटैक्स क्या देखने के लिए उत्कृष्ट - दस्तावेज देखने की कोशिश की है? https://docs.djangoproject.com/en/1.4/ref/models/querysets/#gt –

+1

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

+0

@ बेरेसबॉटन्ड दुर्भाग्य से यह लिंक अब मर चुका है :( – dKen

उत्तर

172

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

User.objects.filter(userprofile__level__lte=0) 

बराबर या उससे अधिक:

User.objects.filter(userprofile__level__gte=0) 
इसी तरह से भी कम समय के लिए की तुलना में अधिक के लिए

, lt और gt। आप उन्हें सभी in the documentation पा सकते हैं।

+2

वाह, जो तेज़ था :)। यह कम या बराबर के लिए बहुत अच्छा काम करता है, लेकिन कैसे कम से कम के बारे में? (userprofile__level__lt = 3) – Finglish

+0

काम नहीं कर रहा है ऐसा क्यों नहीं होगा। ऐसा होता है। –

+1

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

संबंधित मुद्दे