Django查询集过滤器GT,LT,GTE,LTE返回完整对象列表

时间:2014-06-13 17:59:01

标签: python django django-queryset

我尝试使用.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

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

2 个答案:

答案 0 :(得分:9)

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

filtered = all_objects.filter(score__lt=100)

答案 1 :(得分:6)

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