Complex filters in the Django model

I want to query my Django model with this filter:

(pseudo code) field1values = ['val11','val12'] field2values = ['val21','val22'] result = (field1 == 'val11' | field1 == 'val12') & (field2 == 'val21' | field2 == 'val22') 

If I had to request only field1 here, the code could look like this:

  clauses = [] for item in field1values: clauses.append(MyModel.objects.filter(field1=item)) result = reduce(lambda x, y: x | y, clauses) 

But I can’t figure out how to create filters for the complex predicate that I want

+4
source share
1 answer

Q objects.

 resultquery = (Q(field1='val11') | Q(field1='val12')) & ... result = SomeModel.objects.filter(resultquery) 

In addition, in .

+5
source

Source: https://habr.com/ru/post/1484944/


All Articles