这里我遇到的问题如下: 我通过post获取参数来根据我传递的paramtros进行查询...做性别过滤器。 所以我做得很好
def filter(request):
if request.method == 'POST':
namepost = request.POST.get('name')
surnamepost = request.POST.get('surname')
if namepost != None and surnamepost != None:
result = [a.get_json() for a in Player.objects.filter((Q(name=namepost) & Q(surname=surnamepost)))]
elif namepost != None and surnamepost == None:
result = [a.get_json() for a in Player.objects.filter(name=namepost)]
data = {"meta": {"total_count":len(result)}, "objects": result}
aa = json.dumps(data)
return HttpResponse(aa, content_type='application/json')
工作正常,问题是: 如果它只是这两个参数,没有问题,就是完成剩下的假设......问题是我可以通过post传递给过滤器最多10个参数,我永远不知道传递了哪些参数,可以是1,2,4 ......作为用户制作过滤器
但这样做需要很多ifs,它会有很多机会...... 有什么方法可以用另一种方式做到这一点吗?
答案 0 :(得分:0)
未经测试,假设我已正确理解你的问题,你可以做这样的事情,
def filter(request):
if request.method == 'POST':
filter_objects = [
Q(**{key: value}) for key, value in request.POST.iteritems() if value
]
result = [a.get_json() for a in Player.objects.filter(*filter_objects)]
data = {"meta": {"total_count":len(result)}, "objects": result}
aa = json.dumps(data)
return HttpResponse(aa, content_type='application/json')