次のpostgres dbテーブルを持つDjangoアプリケーションがあります: パブリケーションとタグ
Publication {
title
tags
}
Tag {
title
}
タグとパブリケーションには、多対多の関係があります。
私がやりたいことは、and/or コンボ検索を実行することです。たとえば、A、B、C、D の 4 つのタグがあるとします。A または B タグが関連付けられているすべての出版物を検索し、ANDそれに関連付けられた C OR D タグ。たとえば、検索フィールドに次のように入力します: (A || B) && (C || D)。つまり、結果は、各「または」ペアから少なくとも 1 つのタグを持つパブリケーションを生成する必要があります。
タグのタイトルを入力して、出版物のタイトルを返すことができるようにしたいと考えています。
私は Django フィルターを使用してこれを実行しようとしましたが、昨日もこの質問をしました: AND/OR 検索 Django-Postgres アプリを実行する効率的な方法は何ですか? そして最終的に、生の続編クエリを実行する方がおそらく優れていることに気付きました。唯一の問題は、生の続編ステートメントを書いたことがないことです。
ここ数時間、この質問を見て過ごしました: How to filter SQL results in a has-many-through relationship , そしてそれを自分の状況に適用しようとしています, しかし、私はあまりにも初心者であり、それを行うことができません.それ。
私のモデルが与えられた場合、このクエリを構築する方法を誰かに教えてもらえますか?