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 に答える