在官方 Django 文档中,关于从查询集中排除的部分(https://docs.djangoproject.com/en/dev/ref/models/querysets/#exclude),有几个查询的解释:
此示例排除所有 pub_date 晚于 2005-1-3 且标题为“Hello”的条目:
Entry.objects.exclude(pub_date__gt=datetime.date(2005, 1, 3), headline='Hello')
在 SQL 术语中,计算结果为:
SELECT ...
WHERE NOT (pub_date > '2005-1-3' AND headline = 'Hello')
此示例排除所有 pub_date 晚于 2005-1-3 或标题为“Hello”的条目:
Entry.objects.exclude(pub_date__gt=datetime.date(2005, 1, 3)).exclude(headline='Hello')
在 SQL 术语中,计算结果为:
SELECT ...
WHERE NOT pub_date > '2005-1-3'
AND NOT headline = 'Hello'
请注意,第二个示例更具限制性。
最后一个我不清楚。我看不出第一个和第二个之间有什么区别,谁能解释一下?