vmassuchetto
vmassuchetto

Reputation: 1569

Generate a django queryset based on dict keys

I have a dict like:

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

And I need a queryset like

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

Thanks

Upvotes: 2

Views: 2849

Answers (2)

vmassuchetto
vmassuchetto

Reputation: 1569

There's a more pragmatic approach, as I need to generate various keys from one.

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

Upvotes: 1

Ignacio Vazquez-Abrams
Ignacio Vazquez-Abrams

Reputation: 799310

reduce(operator.or_, Q(**{key + '__icontains': val}) for (key, val) in D.iteritems())

Upvotes: 8

Related Questions