0

我有以下代码:

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
4

1 回答 1

1

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

Q(**{test[0]: True})
于 2012-09-17T16:03:38.553 回答