【发布时间】:2021-07-07 02:07:00
【问题描述】:
我有一个问题。
qu = Product.objects
.filter(color = 'black')
.filter(color = 'white')
.all()
这给了我正在寻找的“与”逻辑。现在我想传递标准的字典。
my_crit = { 'color': 'black', 'color': 'white' }
qu = Product.objects
.filter(**my_crit)
.all()
这给了我 OR,这对我不利。所以我尝试了Q。
crit1 = Q(color='black')
crit2 = Q(color='white')
qu = hello = Product.objects
.filter(crit1 & crit2)
.all()
这将返回 0 个结果的查询。所以问题是 - 我如何使用带有动态输入的过滤器链(AND 逻辑)? (我自己的字典等)。
【问题讨论】:
-
你试过
getattr方法吗? -
不行,请问可以参考一下吗?
-
@Barrandov 首先
{ 'color': 'black', 'color': 'white' }你不能在同一个字典中有两次相同的键。其次crit1 & crit2这是一个不可能的条件,一个属性(color)怎么可能同时有两个不同的值(black和white)?谈到您的第一个查询,您似乎没有显示您的实际查询,您似乎与某个模型有许多关系,并且正在链接过滤器,这将为您提供您所谈论的行为。 -
阿卜杜勒,谢谢你的回答。是的,我使用的是 M2M 模型。
标签: django django-orm