在Django QuerySet中,如何在过滤器中进行否定?

Thi*_*Lam 13 django

在Django中过滤QuerySets的工作方式如下:

Entry.objects.filter(year=2006)
Run Code Online (Sandbox Code Playgroud)

如何使用过滤器查找没有2006年的所有条目?类似于以下sql的东西:

SELECT * 
FROM entries
WHERE not year = 2006
Run Code Online (Sandbox Code Playgroud)

Jes*_*e L 23

我想你正在寻找这个exclude()方法:

>>> Entry.objects.exclude(year=2006)
Run Code Online (Sandbox Code Playgroud)

将返回不在2006年的所有Entry对象.

如果您希望进一步过滤结果,可以将其链接到filter()方法:

>>> Entry.objects.exclude(year=2006).filter(field='value')
Run Code Online (Sandbox Code Playgroud)