2014-06-13 14 views
5

.filter(field__lte = parameter) kullanarak veritabanımdaki nesnelere filtre uygulamak çalışıyorum, ancak yalnızca TÜM nesneleri döndürür ve herhangi bir filtre uygulamıyor. Parametreyi, veritabanında saklanan herhangi bir değerin çok üzerinde ayarlamıştım ve tüm nesneler hala döndürülüyor.Django queryset filtresi GT, LT, GTE, LTE tam nesne listesini döndürür

>> all_objects = Ranked.objects.all() 
>> filtered = all_objects.filter(score__lte = 100) #The max possible score is 100 
>> len(filtered) 
87 #Every object in the db 

ben karşı sorgulama ediyorum veritabanında alan bir IntegerField olduğunu.

Burada yanlış bir şey yapıyorum? Yardım ettiğin için teşekkür ederim.

+0

Belki tüm nesneler puanı ise <= 100. kimin puanıdır nesneler olmadığından emin misiniz> 100? –

+0

'score__lte = 10' yapmayı deneyin ve aynı sonucu alıp almadığınızı görün. Benim için iyi görünüyor - max 100, ve bana 100 – karthikr

+2

Django ORM daha az veya eşit her şeyi olsun "filtre" için sağladığınız koşul _ _ _ "bu filtrelemek" _ yorumlamak değil _, ancak _ bunlar "_. –

cevap

6

The max possible score is 100 diyorsunuz. score__lte=100 kullanarak, scoreile 100'e eşit veya daha az olan tüm nesneleri filtrelersiniz - tablodaki her nesne kendi tanımınıza göre.

6

Maksimum olası puan 100 olduğu gibi, lte tüm puanları 100'a eşit veya eşit olan tüm nesneleri döndürmesi gerektiği anlamına gelir. Sadece skor az 100 daha bu nesneleri döndürmek demektir lt arama gerekebilir:

filtered = all_objects.filter(score__lt=100)