我有一个要与之过滤的字段对象 由于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)
)
答案 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
并将其通过过滤器。