1

我目前正在使用 SQLAlchemy 在我的应用程序中编写测试。

我有tasks属于plans。但是tasks它们在表的外键上是多态的type。请参阅:定义类后如何设置多态标识?

基本上,根据 to 的外键TypeTask可以是TaskA对象或TaskB对象,两者都是从子类化的Task,默认情况下,实例是 a (附加Task了它自己的)。type

在我的测试BaseTestCase 中,我初始化了一个会话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正确分配了它。

任何帮助将不胜感激。

(我不确定还有哪些其他信息对此很重要。)

4

0 回答 0