1

我有一个用例,其中导入了一个 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_ 是 & 运算符,这就是它不起作用的原因。这也能做到!!

4

2 回答 2

0

AND is the default operation for filter().

Models.objects.filter(*l)
于 2014-12-20T01:32:58.660 回答
-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 字段问吗?每个模型实例不是唯一的吗?

于 2013-10-25T03:12:08.327 回答