在官方的Django文檔,部分來自查詢集排除(https://docs.djangoproject.com/en/dev/ref/models/querysets/#exclude),有幾個查詢的解釋:Django文檔錯誤?
這個例子中排除其PUB_DATE晚於2005-1-3,其標題是「你好」的所有條目:
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'
注意第二個例子是更限制性的。
最後一個不清楚。我沒有看到第一個和第二個之間的區別,任何人都可以解釋這一點嗎?
THX的答案,然後是另一個問題:爲什麼是Entry.objects.exclude(pub_date__gt = datetime.date(2005,1,3))。exclude(headline ='Hello')等於SELECT ... WHERE NOT pub_date>'2005-1-3' AND不是標題='你好',我不能真正理解爲什麼在SQL中有AND,而不是OR? – 2013-02-15 14:57:10
看看我的編輯。希望這可以幫助 :) – dmg 2013-02-15 15:42:58