【发布时间】:2021-01-14 06:10:36
【问题描述】:
我想以查询词来自变量的方式使用 django.db.models.Q 对象。
我想要实现的与此相同:
q = Q(some_field__icontains='sth')
Obj.objects.filter(q)
,但是 some_field 的值应该来自一个变量:
field_name='some_field'
q = Q('%s__icontains=sth' % field_name)
Obj.objects.filter(q)
,但是这个解决方案当然不会给我正确的结果。
我也尝试过这样使用字典:
dt = {'%s__icontains' % field_name: 'sth'}
q = Q(**dt)
Obj.objects.filter(q)
,但这在结果上也失败了。
如何使用 Q 对象将变量用作查询词?
谢谢。
【问题讨论】:
-
“结果失败”是什么意思?
-
它没有返回正确的(预期的)结果数。实际上它的结果是 0。
-
你确定
field_name是some_field吗?如果您与另一个field_name合作,结果当然会有所不同。