Cho*_*key 2 python session sqlalchemy flask
我只是困惑.我忘了添加
db.session.add(newbranch)
到下面的代码,只是为了找出它,不知何故它已经在会话中,因为我运行commit()它工作.
我的研究表明需要添加新项目.好吧,正如你在下面的代码中看到的那样,我正在创建新项目但不添加它们,但它们会被添加.
谁能帮我理解为什么?
从我的观点来看:
newbranch = Branch(
name = newbranch_form.name.data,
account = account)
newbranch_form.populate_assoc(newbranch)
db.session.commit()
Run Code Online (Sandbox Code Playgroud)
我的表格中的助手功能:
def populate_assoc(self, branch_obj):
branch_obj.name = self.name.data
for assoc_obj in branch_obj.equipment_assoc:
db.session.delete(assoc_obj)
for eq, mod in zip(self.equipment, self.mod):
new_assoc = A_branch_eq(
equipment_id = eq.data,
branch = branch_obj,
mod = mod.data)
Run Code Online (Sandbox Code Playgroud)
branch_obj已经在会议中.A_branh_eq通过分配关系属性(branch=branch_obj)将它与实例相关联时,它们会被添加到brand_obj已经属于的同一会话中.只有db.session.add当实例的任何部分或其关系已经在会话中时,才需要显式使用.
控制它的设置是relationship.cascade.默认设置包括该save-update选项.
save-update级联表示当一个对象被放入一个Sessionvia时Session.add(),所有与它相关的对象relationship()也应该被添加到另一个中Session.
| 归档时间: |
|
| 查看次数: |
62 次 |
| 最近记录: |