django动态列查询

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)|……) 我应该如何构建查询

我在这样的地方生成了一个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)
对于“和”查询,它要简单得多,如以下问题的答案所示:


您也可以在一行中以函数方式完成,而不必使用程序范式强制使用的那些烦人的临时变量:

SomeModule.objects.filter(reduce(Q.__or__, (Q(k=v) for k, v in d.iteritems())))