0

在这里,我遇到了一个问题,如下所示:我通过 post 获取参数以根据传递给我的参数进行查询……执行性别过滤器。所以我过得很好

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')

工作正常,问题是:如果只有这两个参数,没有问题,是完成其余的假设...问题是我最多可以有 10 个参数通过邮寄方式传递给过滤器,而且我永远不知道通过了哪些,可以是 1 , 2, 4, ... 因为用户制作了过滤器

但是这样做需要很多如果,它会有很多机会......有什么办法我可以用另一种方式做到这一点?

4

1 回答 1

0

Untested, and assuming I've understood your question correctly, you could do something like this,

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')
于 2013-10-08T20:49:05.263 回答