我有一个用例,其中有一个导入的csv,我需要检查以确保特定列的所有条目都对应于同一个对象。
例如,说:
l = ['test1', 'test2']
我需要类似的东西:
Model.objects.filter(Q(id='test1') and Q(id='test2')
我不知道l中有多少元素,所以如何构建一个允许我这样做的查询:
我试过了:
h = Q()
for i in l:
h &= Q(id=i)
但这不起作用
感谢任何帮助
更新
这也不起作用
Models.objects.filter(reduce(operator.and_, l))
我认为operator.and_是&运算符,这就是为什么它不起作用。这甚至可以做到!!
答案 0 :(得分:0)
AND是filter()
的默认操作。
Models.objects.filter(*l)
答案 1 :(得分:-1)
也许那个?
if l: # 'l' is a bad variable name
query = Models.objects # this returns all objects!
for item in l:
query = query.filter(id=item) # each filter adds a 'and'
return query.exits()
else:
return False # If no values, does it return False?
你真的问过id领域吗?对于每个模型实例来说,它不是唯一的吗?