Django queryset filter GT, LT, GTE, LTE返回完整对象列表



我试图使用.filter(field__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

我要查询的数据库中的字段是一个IntegerField

我在这里做错了什么吗?谢谢你的帮助。

正如您所说的最大可能分数是100,因此它将始终返回所有对象,因为lte意味着返回分数小于或等于100的所有对象。您可能需要lt查找,这意味着只返回得分小于100的对象:

filtered = all_objects.filter(score__lt=100)

你说的是The max possible score is 100。通过使用score__lte=100,您可以过滤score 小于或等于 100的所有对象-根据您自己的定义,这是表中的每个对象。