次の関係を記述できるSQLAlchemy/Elixerモデルを定義しようとしています。SSPテーブルがあり、POCテーブルへの複数の外部キーがあります。SSPオブジェクト内でManyToOne関係を正しく定義しました(正しく定義できるようにしましたSSP.get(1).action.first_name
)。また、この関係の反対側も追加したいと思います。ここでは、POC.get(1).csa
このPOCがidPOCCSAとして定義されているSSPオブジェクトのリストのようなものを実行して返すことができます。
これはポリモーフィックな関連付けに最適であることはわかっていますが、DBスキーマをまったく変更することはできません(type
関連付けの列を持つ新しいpoc2sspテーブルを作成します)。
class POC(Entity):
using_options(tablename = 'poc', autoload = True)
# These two line visually display my "issue":
# csa = OneToMany('SSP')
# action = OneToMany('SSP')
class SSP(Entity):
'''
Many to One Relationships:
- csa: ssp.idPOCCSA = poc.id
- action: ssp.idPOCAction = poc.id
- super: ssp.idSuper = poc.id
'''
using_options(tablename = 'spp', autoload = True)
csa = ManyToOne('POC', colname = 'idPOCCSA')
action = ManyToOne('POC', colname = 'idPOCAction')
super = ManyToOne('POC', colname = 'idPOCSuper')
これを達成するためのアイデアはありますか?Elixer FAQには、primaryjoinパラメーターとforeign_keysパラメーターを利用した良い例がありますが、ドキュメントでそれらを見つけることができません。私は、OneToMany()がManyToOne()のようにcolnameパラメーターをサポートすることを望んでいました。少し冗長ではありません。