具有动态场的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(',')))

这是筛选查询。。。我认为这没有什么意义。。。您的代码将像我一样进行连接。。这只是另一种方法这是过滤查询。。。我认为这没有什么意义。。。您的代码将像我一样进行连接。。这只是另一种方法