2013-10-24 38 views
1

我有一个用例,其中导入了一个csv,我需要检查以确保特定列的所有条目都对应于同一个对象。Django:动态创建一个Q()和

例如,说:

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_是&运营商,这就是为什么它不起作用。这甚至可以做到!

回答

-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字段吗?是不是每个Models实例都是唯一的?

0

AND是filter()的默认操作。

Models.objects.filter(*l)