現在、SQLAlchemy を使用するアプリケーションでテストを作成しています。
にtasks
所属していplans
ます。ただし、テーブルtasks
への外部キーでは多態的です。type
参照:クラスが定義された後にポリモーフィック ID を設定するにはどうすればよいですか?
基本的に、 への外部キーに応じて、Type
はTask
オブジェクトTaskA
またはTaskB
オブジェクトであり、両方とも からサブクラス化Task
され、デフォルトではインスタンスはTask
(独自type
にアタッチされた) です。
私のテストBaseTestCas
e では、でセッションを初期化しますsetUp
(そしてで閉じますtearDown
)。
私がしようとすると:
self.task.plan = self.plan
self.session.add_all([self.plan, self.task])
self.task = self.session.merge(self.task)
次のエラーが表示されます。
/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py:154: SAWarning: Flushing object <Task at 0x5b93150> with incompatible polymorphic identity '58dbb417-1cb3-47c8-8bb4-5a7e2fe34498'; the object may not refresh and/or load correctly mapper._validate_polymorphic_identity(mapper, state, dict_)
というエラーが続きます
IntegrityError: (IntegrityError) null value in column "plan_id" violates not-null constraint
plan
適切に割り当てたにもかかわらず。
どんな助けでも大歓迎です。
(これに関して他にどのような情報が重要かはわかりません。)