誤ったクエリセットを提供している django クエリがあります。次の個々のクエリから、1 - 0 = 1 が得られるはずですが、代わりに 0 の結果が得られます。これはなぜですか?
>>> MessageThread.objects.filter(message__recipient=p2)
[<MessageThread: message thread one>]
>>> MessageThread.objects.filter(message__status='deleted', message__recipient=p2)
[]
>>> MessageThread.objects.filter(message__recipient=p2)
.exclude(message__status='deleted', message__recipient=p2)
[]
query1 - query2 を取得するクエリを作成するにはどうすればよいですか? これは私がSQLで必要なものです:
SELECT * FROM messaging_messagethread
WHERE id NOT IN
(SELECT DISTINCT thread_id FROM messaging_message
WHERE status = 'deleted' AND recipient_id=4)