无法将关键字“ field_object”解析为字段

时间:2019-07-25 05:31:03

标签: django django-rest-framework

我有一个要与之过滤的字段对象 由于filter字段将动态变化。

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)
        )

1 个答案:

答案 0 :(得分:0)

您不能直接在过滤器中传递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,value是要查询的实际值。然后使用**query将字典转换为key=value并将其通过过滤器。