#django #django-orm
#django #django-orm
Вопрос:
У меня есть простой запрос с фильтром и исключением. Исключение для Q amp; Q не работает.
Ниже приведен запрос, который я использую.
start_date = (datetime(time.localtime().tm_year, time.localtime().tm_mon, 1) - timedelta(1)).replace(day=1)
data = models.Test.objects.filter(
is_deleted=False).exclude(Q(status__in=[1,2,3]) amp; Q(modified_at__lt=start_date))
.select_related('created_by')
.prefetch_related('name')
Я хочу, чтобы исключение сработало. Если я использую exclude дважды, я получаю результат.
Ответ №1:
exclude(**kwargs)
Возвращает новый набор запросов, содержащий объекты, которые не соответствуют заданным параметрам поиска. Параметры поиска (** kwargs) должны быть в формате, описанном в поиске полей ниже. Несколько параметров объединяются черезAND
в базовом операторе SQL, и все это заключено вNOT()
.
Итак, просто используйте Q()
объекты с разделением запятой,
.exclude(Q(status__in=[1,2,3],Q(modified_at__lt=start_date))
Комментарии:
1. Спасибо. Сработало отлично.