0
我从here知道,就在Django一个QuerySet执行或操作,我可以做这样的事情:动态设置或者Django的过滤器值的查询集
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)
但是,进入过滤器实际上不能是字符串的东西,所以这是不行的。我该怎么做呢?