【发布时间】:2011-05-11 13:06:25
【问题描述】:
Django 中的 create() 方法创建一个模型实例,然后调用 save(),据说这会触发提交。所以触发事务的提交应该没有任何区别。
但实际上,在 Postgresql 上执行一个使用 create() 创建一堆模型实例的方法,我得到了 transaction aborted, commands ignored until end of transaction 异常。该方法在非事务性数据库后端运行良好。此外,当我将 create() 替换为:
m = Model(attr1=..., attr2=...)
m.save()
它也可以在 Postgresql 上运行。
在事务的意义上使用save() 和create() 有区别吗?
edit: create() 还在调用 save() 之前设置了self._for_write = True,但我无法追踪它是否对事务行为有任何影响。
编辑:示例代码可以在here找到。
【问题讨论】:
标签: django transactions commit