0

一部のプロジェクトでは、1対nの関係で接続されている2つのテーブルのユーザー要求マッピング(実行時)を実装しています(1つのテーブルにはForeignKeyフィールドがあります)。

ドキュメントから得たものから、通常の方法は、backrefを使用して非外部キーテーブルのcollection_classとしてmapped_collectionを使用してマップされたプロパティにorm.relationを追加し、最終的に両方のテーブルormオブジェクトが互いにマップされるようにすることです。属性について(一方には、使用されているorm.relationのcollection_classを介したコレクションがあり、もう一方には、backrefによって配置された属性があります)。

私は、ユーザーが何を決定したかに応じて、ForeignKey側に他のテーブル(backrefによって作成されたテーブル)にマップされた属性を持たせたい場合があります(彼はそれを持ちたいだけかもしれません)サイドマップ)。

ここで、ForeignKeyテーブルでもorm.relationを使用できるかどうか疑問に思っているので、以前と同じように、非外部キーテーブルでorm.relationを使用して、mapped_collectionを使用し、backrefを使用せ、別のormを使用することになります。そのautomagicbackrefを置き換える外部キーテーブルの.relation(両方のテーブルで2つのorm.relationsを作成し、両側から相互にマッピングします)。

それは私を困らせるでしょうか?結果は同等ですか(backrefを使用した非外部キーテーブルの1つのorm.relationと同等)?非ForeignKeyテーブルのディクショナリをそのbackrefと一緒にマップすることなく、ForeignKey側だけにマップする別の方法はありますか?

4

1 に答える 1

1

私は今までに自分で答えを見つけました:

両側からを使用し、orm.relation後方参照を使用しない場合は、back_populates を使用する必要があります。そうしないと、片側をいじると、反対側のマッピングで適切に更新されません。

したがって、orm.relation自動化された後方参照の代わりに各側からの参照は可能ですが、それに応じて back_populates を使用する必要があります。

于 2011-04-08T12:11:53.687 に答える