我得在某处这样产生的字典:Django的动态栏查询
d = { 'K1': 'V1', 'K2': 'V2',...}
我想建立一个像查询:
SomeModule.objects.filter(Q(K1 = V1)| Q(K2 = V2)| ...)
我应该怎么做才能构建查询?
我得在某处这样产生的字典:Django的动态栏查询
d = { 'K1': 'V1', 'K2': 'V2',...}
我想建立一个像查询:
SomeModule.objects.filter(Q(K1 = V1)| Q(K2 = V2)| ...)
我应该怎么做才能构建查询?
如果你正在做的“OR”查询,像这样:
from django.db.models import Q
q = Q()
for k,v in d.iteritems():
q |= Q(**{'%s__equal' % k: v})
SomeModule.objects.filter(q)
“且”查询它的简单得多,如图答案In Django, how does one filter a QuerySet with dynamic field lookups:
SomeModule.objects.filter(**d)
你也可以在没有那些讨厌的临时变量的情况下,只用一行就可以实现这一功能:
SomeModule.objects.filter(reduce(Q.__or__, (Q(k=v) for k, v in d.iteritems())))