1
假设我正在运行的几个模型对象在Django的更新:我是否需要在事务中包装django更新?
SomeModel.objects.filter(name="abc").update(name="xyz")
我需要在transaction.atomic
来包装呢?如果我不这样做会有什么不好吗?
假设我正在运行的几个模型对象在Django的更新:我是否需要在事务中包装django更新?
SomeModel.objects.filter(name="abc").update(name="xyz")
我需要在transaction.atomic
来包装呢?如果我不这样做会有什么不好吗?
Django的默认事务模型是自动提交到数据库。这意味着如果在提交了一些更改之后出现异常,但是在所有更改都已提交之前,您最终可能会遇到问题或不确定。这取决于你想要做什么。这是一个潜在的问题,根据您自己的代码?是否存在发生错误的风险,如果是这样,那么会出现一些对象已被更新但不是其他问题的问题吗?
如果是这样,您可以通过使用@ transaction.atomic修饰符(对于函数)或通过用with transaction.atomic():
包装特定的代码片段来阻止此操作。这将在发生错误时回滚对数据库的更改。为了超级安全,我想你总是可以使用原子事务,但是你需要吗?