Ant*_*njo 5 python transactions odoo-10
好吧,我的函数中有很多操作。有一个循环,里面有一个self.create()函数,在它里面还有另一个包含另一个create函数的循环,依此类推……但它们的 ID 相互依赖。
这是一个代码示例(缩小)
@api.multi
def create_report(self):
id_report = None
reports = [ResumeReport(resume) for resume in data] # a tab containing many reports to be created
repo = self.env["module1"].search([("date", "=", str(date))])
if repo:
for r in repo:
id_report = r
else:
id_report = self.env["module1"].create({
'name': name
})
for rep in report:
self.env["module2"].create({
'report_id': id_report.id,
'name': name
})
Run Code Online (Sandbox Code Playgroud)
所以我想做的是把这段代码放在一个事务下。这将是一个相当大的 SQL 操作,所以当发生错误时,我希望它被回滚并取消所有操作(事务!)。否则提交。但我不知道是否有可能在 Odoo 10 中做到这一点,因为我没有找到任何关于 transaciton 的文档。
请问你能帮帮我吗?
解决了
@api.multi
def create_report(self):
self._cr.autocommit(False)
try:
id_report = None
reports = [ResumeReport(resume) for resume in data] # a tab containing many reports to be created
repo = self.env["module1"].search([("date", "=", str(date))])
if repo:
for r in repo:
id_report = r
else:
id_report = self.env["module1"].create({
'name': name
})
for rep in report:
self.env["module2"].create({
'report_id': id_report.id,
'name': name
})
self._cr.commit()
except:
self._cr.rollback()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1909 次 |
| 最近记录: |