动态地在django查询中放置一个值

时间:2012-09-17 15:56:24

标签: django

我有以下代码:

hotels = models.Hotel.objects.filter(
            wed=True,
            county=hotel_main.county.id,
            subscriptions__end_date__gte=datetime.date.today(),
            subscriptions__enquiry_count__lte=F('subscriptions__tier__enquiry_limit'),
        ).filter(Q(x=TRUE|Q(y=True)).distinct()

我有一个列表test = ['x','y','z','w']

过滤器的值会动态变化,所以我使用类似的东西:

filter(Q(test[0]=TRUE|Q(test[3]=True))

动态变化,但当我这样做时,我收到以下错误:

Keyword can't be an expression

我知道我不能在那里使用但是让我知道如何实现这一点......谢谢!

修改

我做了克里斯建议:

test[1] = {x: True} 

在我的过滤器中,我按照以下方式执行了

filter(Q(test[1])).

它给了我以下错误:

need more than 1 value to unpack

1 个答案:

答案 0 :(得分:1)

使用字典设置密钥,然后将其扩展为**的kwargs,即:

Q(**{test[0]: True})