公式の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'
2番目の例はより制限的であることに注意してください。
最後のものは私にはわかりません。最初のものと2番目のものの違いはわかりませんが、誰かがこれを説明できますか?