1

「modelA」と「modelB」という 2 つの異なる Django モデルがあり、「EMAIL」と「NAME」という 2 つの列のみが共通しており、各モデルの残りの列は異なります。「modelA」から単一のオブジェクトリストを返したいが、「modelB」に「EMAIL」と「NAME」の組み合わせが重複していない...

たとえば、「modelA」に次のオブジェクトがあるとします。

EMAIL             NAME       SOMEFIELD
bob@email.com     Bob        ....
bob@email.com     Robert     ....

「modelB」には次のオブジェクトがあります。

EMAIL             NAME       ADIFFERENTFIELD
bob@email.com     Bob        ....
sammy@email.com   Sam        ....
bob@email.com     Bobby      ....

最終的な「modelA」クエリセットのみを返すようにします。

EMAIL             NAME       SOMEFIELD
bob@email.com     Robert     ....

このDjangoを行う最も効率的な方法は何ですか? 私が今考えることができる最善の解決策は、「modelA」クエリセットを取得し、各オブジェクトを繰り返し処理して、「modelB」に同じ「EMAIL」と「NAME」の組み合わせが存在するかどうかをテストし、存在しない場合は追加することですそのオブジェクトを新しいリストに追加します。ただし、これは非常に非効率に聞こえます。そして、私は Django の経験がほとんどありませんが、もっと良い方法があるに違いないことを知っています :) 関連する場合、私のデータベースは PostgreSQL を使用しています。前もって感謝します。

4

2 に答える 2

0

最も効率的なのは生のクエリです。確かに Q または集計を使用しようとしますが、django は純粋で迅速な SQL を生成しません。

自然結合についてお読みください。 SQL 自然結合 POSTGRES

于 2013-08-13T19:38:53.757 に答える