【问题标题】:Cannot resolve keyword 'field_object' into field无法将关键字“field_object”解析为字段
【发布时间】:2019-07-25 05:31:03
【问题描述】:

我有一个要过滤的字段对象 由于过滤器字段会动态变化。

only_user=User.objects.first()

field_object = only_user._meta.get_field(field)
field_object2 = only_user._meta.get_field(field2)    
QuerySet = User.objects.filter(Q(field_object="xxx")|Q(field_object2="yyy"))

但我做不到,它说

Cannot resolve keyword 'field_object' into field. Choices are: .....

编辑:

我知道了,谢谢:

       sub_filter = {field: field_value}
       sub_filter = {field2: field_value}
        q_list=[Q(**sub_filter),Q(**sub_filter2)]
        QuerySet = User.objects.filter(
            reduce(operator.or_, q_list)
        )

【问题讨论】:

    标签: django django-rest-framework


    【解决方案1】:

    你不能直接在过滤器中传递field_object。因为您不能将变量作为关键字参数的键传递。

    试试这样:

    field_object = only_candidate._meta.get_field(field)
    query1 = { field_object : 'xxx' }
    query2 = { field_object2 : 'yyy' }
    QuerySet = MyModel.objects.filter(Q(**query1)|Q(**query2))
    

    基本上,我在这里使用field_object 创建一个字典,键是field_object,值是您要查询的实际值。然后使用**query 将字典转换为key=value 并通过过滤器传递它。

    【讨论】:

    • 抱歉,忘了说我需要使用 OR 进行过滤,我如何在多个字段上使用 OR 进行过滤
    猜你喜欢
    • 2018-11-23
    • 2011-06-09
    • 2021-02-06
    • 1970-01-01
    • 2021-05-23
    • 2013-10-09
    • 2019-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多