Создайте набор запросов Django на основе ключей dict - PullRequest
2 голосов
/ 18 марта 2011

У меня есть что-то вроде:

{
    'key1' : val1,
    'key2' : val2
}

И мне нужен набор запросов типа

Q(key1__icontains = val1) | Q(key2__icontains = val2)

Спасибо

Ответы [ 2 ]

8 голосов
/ 18 марта 2011
reduce(operator.or_, Q(**{key + '__icontains': val}) for (key, val) in D.iteritems())
0 голосов
/ 18 марта 2011

Есть более прагматичный подход, так как мне нужно генерировать различные ключи из одного.

query = None
for key, value in d.iteritems():
    if query is None:
        query = Q(**{key + "__icontains" : value})
    else:
        query |= Q(**{key + "__icontains" : value})
...