【问题标题】:django filtering with q objects with dynamic fieldsdjango 过滤带有动态字段的 q 个对象
【发布时间】:2017-11-22 14:08:48
【问题描述】:

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

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

但它会引发语法错误!

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

如何做到这一点?

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

【问题讨论】:

    标签: django django-models


    【解决方案1】:

    你可以创建带参数的dict并在Q构造函数中解包:

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

    【讨论】:

      【解决方案2】:

      如果需要字符串格式化,可以使用Q('{}={}'.format(field, i))吗?

      【讨论】:

      • 这是过滤器查询...我认为它没有任何意义...您的代码将像我一样进行连接..它只是另一种方法
      猜你喜欢
      • 2012-10-16
      • 2018-05-25
      • 2014-03-22
      • 2010-12-27
      • 1970-01-01
      • 2018-12-19
      • 1970-01-01
      • 2019-08-23
      • 2021-12-09
      相关资源
      最近更新 更多