私は参加する必要のある2つのモデルがあります。これは非リレーショナル(外部キーなし)です。これらは私が変更できない他の開発者によって書かれたものです。ここでDjango 1.3の非リレーショナルモデルを2つのフィールドに結合する方法
は、それらの簡単な説明です:
モデルプロセス
- フィールド名
- フィールドパス
- somethingelseフィールド
- フィールドバー
モデルサービス
- フィールド名
- フィールドパス
- フィールドサービス名
- フィールドfooの
私は、ファイル名とパスの列にこれら二つのモデルのすべてのインスタンスに参加する必要があります。この結合が行われる前に、それぞれに適用する必要がある既存のフィルタがあります。
例:
A = Process.objects.filter(somethingelse = 231)
B = Service.objects.filter(FOO = 'ABC')
結果= A.filter(ファイル名= B.ファイル名、パス= B.path)
Djangoでこれを行うのはなぜ簡単なPostgresクエリを書くことができるのですか? – user451500
@ user451500これはあなたのデータ間のこの関係についてdjangoに言わなかったので、djangoでは複雑です。一方、構造化されたデータを正確に処理するためのデータベースが存在し、データベースでは「オブジェクト」またはテーブル行ではなく結果行が得られます。あなたはデータ関係について何も知らないが、それらに参加して、あなたにオブジェクトを提供するシステムを求めています。これはもちろん可能ですが、特に一般的ではありません。私は代わりの解決策で私の答えを更新します。 – Marcin