Django модельный запрос с неравным исключением - PullRequest
1 голос
/ 26 февраля 2020

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

Все посты предлагают исключить параметры, которые должны быть не равны.

Так что мне нужно:

Object.objects.filter(param1=p).exclude(param2=False, param3=False, param4 != q)

Я пытаюсь

Object.objects.filter(param1=p).exclude(param2=False, param3=False).exclude(param4=q)

, но, как и ожидалось, не работает, это то же самое, что exclude(param2=False, param3=False, param4=q)

Итак, как это сделать или как правильно составить цепочку исключающих операторов, чтобы второе исключение указывало на первое исключение, а не на первый фильтр.

1 Ответ

3 голосов
/ 26 февраля 2020

Это логичный вопрос.

Exclude (field1 != value1) совпадает с Include(field1 = value1)

Итак, вы можете использовать filter() metbod as,

Object.objects.filter(param1=p<b>, param4=q</b>).exclude(param2=False, param3=False)

Или

Использование Q() объект с ~ символ

from django.db.models import Q
Object.objects.filter(param1=p).exclude(<b>~Q(param4=q),</b> param2=False, param3=False)
...