Martin
Martin

Reputation: 4330

Django: OR queries with dynamic field names

I have a value and want to get all instances having the value in one or more column. And to make this a bit more complex, the field list is dynamic.

So, what I have is: ['field1', 'field2', 'field3', ...]

What I need is: Q(field1='value') | Q(field2='value') | Q(field3='value') | ...

How can I get this?

Upvotes: 3

Views: 416

Answers (1)

David Wolever
David Wolever

Reputation: 154564

Use ** dictionary-to-kw-args expansion:

q = Q()
for field in fields:
    q = q | Q(**{field: "value"})

(as Q() yield a Q which "does nothing", as far as I can tell)

Upvotes: 7

Related Questions