Django过滤带有动态字段的q个对象

Moh*_*med 1 django django-models

我需要准备带有动态字段的过滤器。我不知道字段名称,所以我需要动态给它。这是我到目前为止尝试过的

gen_query = reduce(operator.or_, (Q(eval('%s=i' % (field, i))) for i in request.query_params.get(field).split(',')))
Run Code Online (Sandbox Code Playgroud)

但这会引发语法错误!

我正在使用,eval(field_name as string)但仍然出现错误。

如何做到这一点?

我想用带有动态字段的q个对象进行django过滤

Dim*_*osh 5

您可以使用参数创建字典并将其解压缩到Q构造函数中:

gen_query = reduce(operator.or_, (Q(**{field: i}) for i in request.query_params.get(field).split(',')))
Run Code Online (Sandbox Code Playgroud)