ボード ソフトウェアに「無視されたユーザー」機能を実装しています。その機能は、ユーザーが無視するメンバーによって開始されたスレッドを非表示にする必要があります。無視されたユーザーの ID を Python リストに取得し、そのリストが空でない場合は、クエリ セットに除外を追加することにしました。
if ignored_users:
queryset_threads = queryset_threads.exclude(start_poster_id__in=ignored_users)
ただし、「filter() を呼び出して、先頭に NOT を追加する」という、exclude の動作に問題があります。ここで、フィルターは次の SQL を生成します。
`threads_thread` . `start_poster_id` IN (2, 3, 4, 5) AND `threads_thread` . `start_poster_id` NOT NULL
NOT NULL を取り除くにはどうすればよいですか? アカウントを削除したメンバーが投稿したスレッドは、「start_poster_id」列に NULL が含まれています。