Python SAWarning:类型的对象<;儿童>;不在会话中,沿';父母子女';不会继续
我被困在这个问题上,不知道如何解决它。这是我的Python SAWarning:类型的对象<;儿童>;不在会话中,沿';父母子女';不会继续,python,sqlalchemy,flask-sqlalchemy,Python,Sqlalchemy,Flask Sqlalchemy,我被困在这个问题上,不知道如何解决它。这是我的models.py文件: models.py 这就是我如何向DB中添加项的方式(response参数包含一个与类匹配的dict,可以直接解包): 现在,概述表已正确填写,但步骤保持为空。检查日志时,我收到以下警告: SAWarning:类型的对象不在会话中,沿“概述.步骤”添加操作将不会继续 (orm_util.state_class_str(state),operation,prop)) 我做错了什么?好吧,我已经通过向会话中添加创建的步骤来解决这
models.py
文件:
models.py
这就是我如何向DB中添加项的方式(response参数包含一个与类匹配的dict,可以直接解包):
现在,概述
表已正确填写,但步骤
保持为空。检查日志时,我收到以下警告:
SAWarning:类型的对象不在会话中,沿“概述.步骤”添加操作将不会继续
(orm_util.state_class_str(state),operation,prop))
我做错了什么?好吧,我已经通过向会话中添加创建的步骤来解决这个问题。我仍然不知道这个警告是什么意思,所以我就把它留在这里。我的解决方案:
for step in steps:
step = Step(overview=overview, **step) # explicitly add
db.session.add(step)
好吧,我已经通过向会话中明确添加创建的步骤解决了这个问题。我仍然不知道这个警告是什么意思,所以我就把它留在这里。我的解决方案:
for step in steps:
step = Step(overview=overview, **step) # explicitly add
db.session.add(step)
通常,当add()
将对象添加到会话时,它们的相关对象将按照您的需要自动添加。这种行为是由关系的行为控制的
在步骤中将级联设置为'delete'
。您可以使用cascade='save-update,delete'
将其添加回,但请查看,并查看您可能还需要什么。一个常见的集合是“全部,删除孤立项”
记住这些都是严格意义上的ORM行为;在级联中设置“delete”
不会设置列的[event]cascade
通常情况下,当add()
将对象设置为会话时,它们的相关对象将按您的需要自动添加。这种行为是由关系的行为控制的
在步骤中将级联设置为'delete'
。您可以使用cascade='save-update,delete'
将其添加回,但请查看,并查看您可能还需要什么。一个常见的集合是“全部,删除孤立项”
记住这些都是严格意义上的ORM行为;在级联中设置'delete'
不会在[事件]级联上设置列的
for step in steps:
step = Step(overview=overview, **step) # explicitly add
db.session.add(step)