1. ホーム
  2. sql

[解決済み] Djangoがクエリに含まれる/含まれない

2022-05-18 12:57:41

質問

django で 'not in' スタイルのクエリをどう書くか考えています。 例えば、私が考えているクエリ構造は次のようなものです。

select table1.* 
from table1
where table1.id not in 
(
  select table2.key_to_table1
  from table2 
  where table2.id = some_parm 
)

table1、table2というモデルを想定した場合、djangoの構文はどのようになりますか?

どのように解決するのでしょうか?

table1.objects.exclude(id__in=
    table2.objects.filter(your_condition).values_list('id', flat=True))

除外機能は Not 演算子のように動作します。属性 flat = Truetable2 を返すようクエリに指示します。 value_list を一階層リストとして返します。つまり...最終的にあなたは IDs のリストを取得し、それを使って table1 の条件を定義するために使用します。