Python Django queryset筛选器GT、LT、GTE、LTE返回完整的对象列表
我试图使用Python Django queryset筛选器GT、LT、GTE、LTE返回完整的对象列表,python,django,django-queryset,Python,Django,Django Queryset,我试图使用.filter(field\uu lte=parameter)过滤数据库中的对象,但它只返回所有对象,不过滤任何对象。我甚至将参数设置为远高于数据库中存储的任何值,并且仍然返回所有对象 >> all_objects = Ranked.objects.all() >> filtered = all_objects.filter(score__lte = 100) #The max possible score is 100 >> len(filtere
.filter(field\uu lte=parameter)
过滤数据库中的对象,但它只返回所有对象,不过滤任何对象。我甚至将参数设置为远高于数据库中存储的任何值,并且仍然返回所有对象
>> 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
我查询的数据库中的字段是一个整型字段
我做错什么了吗?谢谢你的帮助。你是说
可能的最高分数是100
。通过使用score\uu lte=100
,您正在筛选分数小于或等于100的所有对象-根据您自己的定义,这是表中的每个对象。正如您所说,最大可能分数是100
,因此它将始终返回所有对象,因为lte
意味着返回分数小于或等于的所有对象100
。您可能需要lt
查找,这意味着只返回分数小于100的对象:
filtered = all_objects.filter(score__lt=100)
也许所有对象的分数都是100?试着做score\uu lte=10
,看看是否得到相同的结果。对我来说,它看起来很好-max是100,让我知道所有小于或等于100Django ORM的东西都解释为你提供给过滤器的条件不是“过滤掉这些”,而是“让它们通过”。