python查询接收帖子的参数

时间:2013-10-08 16:03:05

标签: python django django-queryset

这里我遇到的问题如下: 我通过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,它会有很多机会...... 有什么方法可以用另一种方式做到这一点吗?

1 个答案:

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