2012-04-06 26 views
91

Kullanıcıları profil adı verilen her kullanıcı profilinde özel bir alana göre filtrelemeye çalışıyorum. Bu alana seviye denir ve 0-3 arasında bir tamsayıdır. Ben eşittir'i kullanarak filtrelerseniz beklendiği gibiDjango queryset'te filtreden daha az veya eşit nasıl yapılır?

, ben seçilmiş seviye ile kullanıcıların bir listesini almak:

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

kullanıyorum süzmek çalıştığınızda az: hatası alıyorum

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

:

global name 'userprofile__level' is not defined

> < veya uzakta filtreye var mı, yoksa ben yanlış kapıyı çalıyorsun ediyorum.

+3

Django'da filtre sözdizimini görmek için - mükemmel belgelere bakmayı denediniz mi? https://docs.djangoproject.com/en/1.4/ref/models/querysets/#gt –

+1

@ BéresBotond Dokümanların harika görünmesine rağmen - yapılandırma ve düzen, doğrudan bir bağlantı olmaksızın o kadar fakirdir, hepsi de işe yaramaz – RunLoop

+0

@ BéresBotond Ne yazık ki bu link şu anda ölü :( – dKen

cevap

172

az ya da buna eşit:

User.objects.filter(userprofile__level__lte=0) 

daha büyük ya da eşit: daha fazla bir sure

User.objects.filter(userprofile__level__gte=0) 
Benzer şekilde

, lt daha az ve gt. Bunları in the documentation bulabilirsiniz.

+2

Vay, bu hızlı oldu :). Bu daha az ya da eşit için harika çalışıyor, ama daha az ne kadar? (userprofile__level__lt = 3) çalışmadığı görülüyor – Finglish

+0

Neden olmasın. Öyle. –

+1

Yapar; ancak her durumda, filtre (__ lt) yerine hariç tutmak (__ gte) yapabilirsiniz. –

İlgili konular