我想根据两个值过滤我的查询集。
我想要两个数字之间的结果。我正在尝试一些代码,但它不起作用。它没有给我正确的结果。 我的代码
def project(request):
try:
proTitle = request.GET.get('title')
ProDescription = request.GET.get('description')
funAria = request.GET.get('funAria')
femaleReq = request.GET.get('femaleReq')
cost_gte = int(request.GET.get('cost_gte'))
cost_lte = int(request.GET.get('cost_lte'))
except:
pass
if cost_gte and cost_lte :
list4 = []
result = Project.objects.filter(budgeted_cost__gte=cost_gte , budgeted_cost__lte=cost_lte )
print result
for res in result:
list4.append(res.project_id)
data ={'cost result':list4}
return HttpResponse(json.dumps(data))
return HttpResponse(json.dumps(data), content_type='application/json')
有时候它会返回所有产品,有些时候它不返回任何产品。我无法理解为什么它不能正常工作。
我也尝试按范围
result = Product.objects.filter(cost__range=(cost_gte,cost_lte))
但行为也一样。请指导我做错了什么。
答案 0 :(得分:1)
在python中使用range
时,它意味着range1 <= i < range2
,但您要查询的过滤器是range1 <= i <= range2
,因此您不应期待range
而是
result = Project.objects.filter(budgeted_cost__gte=cost_gte ,
budgeted_cost__lte=cost_lte )
获得所需的输出。