具有动态场的q对象的django滤波
我需要准备带有动态字段的过滤器。。 我不知道字段名,所以我需要动态地给出它。 这是我到目前为止试过的具有动态场的q对象的django滤波,django,django-models,Django,Django Models,我需要准备带有动态字段的过滤器。。 我不知道字段名,所以我需要动态地给出它。 这是我到目前为止试过的 gen_query = reduce(operator.or_, (Q(eval('%s=i' % (field, i))) for i in request.query_params.get(field).split(','))) 但这是一个语法错误 我正在使用,eval(字段名称为字符串)但我仍然收到一个错误 如何做到这一点 我想用带有动态字段的q对象进行django过滤,如果需要字符串格
gen_query = reduce(operator.or_, (Q(eval('%s=i' % (field, i))) for i in request.query_params.get(field).split(',')))
但这是一个语法错误
我正在使用,eval(字段名称为字符串)
但我仍然收到一个错误
如何做到这一点
我想用带有动态字段的q对象进行django过滤,如果需要字符串格式,可以使用
q({}={}.format(field,i))
吗?如果需要字符串格式,可以使用q({}={}.format(field,i))
您可以使用参数创建dict并在q构造函数中解压:
gen_query = reduce(operator.or_, (Q(**{field: i}) for i in request.query_params.get(field).split(',')))
您可以使用参数创建dict并在Q构造函数中解包:
gen_query = reduce(operator.or_, (Q(**{field: i}) for i in request.query_params.get(field).split(',')))
这是筛选查询。。。我认为这没有什么意义。。。您的代码将像我一样进行连接。。这只是另一种方法这是过滤查询。。。我认为这没有什么意义。。。您的代码将像我一样进行连接。。这只是另一种方法