django动态列查询
我在这样的地方生成了一个dict:django动态列查询,django,orm,Django,Orm,我在这样的地方生成了一个dict: from django.db.models import Q q = Q() for k,v in d.iteritems(): q |= Q(**{'%s__equal' % k: v}) SomeModule.objects.filter(q) d={'k1':'v1','k2':'v2',…} 我想构建一个查询,如: SomeModule.objects.filter(Q(k1=v1)| Q(k2=v2)|……) 我应该如何构建查询
from django.db.models import Q
q = Q()
for k,v in d.iteritems():
q |= Q(**{'%s__equal' % k: v})
SomeModule.objects.filter(q)
d={'k1':'v1','k2':'v2',…}
我想构建一个查询,如:
SomeModule.objects.filter(Q(k1=v1)| Q(k2=v2)|……)
我应该如何构建查询?如果您正在执行“或”查询,请执行以下操作:
from django.db.models import Q
q = Q()
for k,v in d.iteritems():
q |= Q(**{'%s__equal' % k: v})
SomeModule.objects.filter(q)
对于“和”查询,它要简单得多,如以下问题的答案所示:
您也可以在一行中以函数方式完成,而不必使用程序范式强制使用的那些烦人的临时变量:
SomeModule.objects.filter(reduce(Q.__or__, (Q(k=v) for k, v in d.iteritems())))