DjangoORMでこのクエリを実行できませんでした。内部結合を作成する方法、このクエリを実行して必要な列のみを返す方法は?
SELECT establecimiento.nombre, categoria.titulo
FROM establecimiento INNER JOIN
categoria ON establecimiento.categoria = categoria.id
pdxwebdevに応答するコメントの情報(外部キーフィールドが宣言されている)に基づくと、これは簡単です。Djangoは、外部キー関係に必要な結合動作の多くを自動化します。
結合から2つのフィールドのみを選択するなど、そのクエリを正確に複製するには、のいずれかvalues
、values_list
またはonly
取得するPythonオブジェクトに応じて実行する必要があります。たとえば、values
辞書の反復可能なクエリセットを取得するために使用するクエリは次のとおりです。
Establecimiento.objects.values('nombre', 'categoria__titulo')
values_list
ディクショナリの代わりにタプルを取得し、これら2つ以外のすべてのモデルフィールドが延期only
されているEstablecimiento
インスタンスを取得します(データベースから取得されていませんが、必要に応じて検索されます)。
その__
ような外部キー関係に従うために使用する場合、Djangoは自動的に内部結合を行います。
select_related
クエリセットで使用して、特定のフィールドを取得していない場合でも結合を実行するように要求することもできます。例えば:
Establecimiento.objects.select_related('categoria')
これにより、のクエリが生成され、データがすでにメモリにロードされているインスタンスのクエリSELECT * from ...
セットが返されます。Establecimiento
categoria
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加