سؤال

I want to query my Django model with a filter like this:

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

If I had to query for 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 cannot figure out how to create the filters for the complex predicate that I want

هل كانت مفيدة؟

المحلول

Q objects.

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

Also, in.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top