В Django QuerySet, как мне сделать отрицание в фильтре?

Фильтрация запросов QuerySet в Django работает следующим образом:

Entry.objects.filter(year=2006)

Как я могу использовать фильтр для поиска всех записей, которые не имеют 2006 года? Нечто похожее на следующий sql:

SELECT * 
FROM entries
WHERE not year = 2006

Ответ 1

Я думаю, что вы ищете метод exclude():

>>> Entry.objects.exclude(year=2006)

Вернет все объекты Entry, которые не были в 2006 году.

Если вы хотите дополнительно фильтровать результаты, вы можете связать это с методом filter():

>>> Entry.objects.exclude(year=2006).filter(field='value')