0

ここから、Django でクエリセットに対して OR 操作を実行するには、次のようなことができることがわかります。

from django.db.models import Q
User.objects.filter(Q(income__gte=5000) | Q(income=0))

ここで、フィルター呼び出し内で Q 条件をハードコーディングする代わりに、動的に設定したいとします。つまり、次のようなことをしたいとします。

User.objects.filter(Q(income__gte=5000) [ONLY IF CONDITION A...] | Q(income=0) [ONLY IF CONDITION B...) | Q(name__contains="blah") [ONLY IF CONDITION C...])

別の言い方をすれば、Q オブジェクトが文字列の場合、特定の条件下で特定の Q オブジェクトを追加したいと思います。これは次のように表されます。

q_string = ""
if conditionA:
    q_string += Q(income__gte=5000)
if conditionB:
    q_string = Q(income=0)

User.objects.filter(q_string)

しかし、フィルターに入れるものは実際には文字列ではないため、これは機能しません。代わりに何をすべきですか?

4

2 に答える 2