【发布时间】:2015-06-08 11:00:04
【问题描述】:
我正在运行 Django 1.4.11。我以类似于以下代码的方式覆盖了 Django 模型的 save() 方法:
from django.db import models
from django.db import transaction
class MyModel(models.Model):
# model definition
@transaction.commit_manually
def save(self, *args, **kwargs):
try:
super(self.__class__, self).save(*args, **kwargs)
foo() # do_other_things
except:
transaction.rollback()
raise
else:
transaction.commit()
当我运行我的代码时,有时我会在 Apache 日志中看到这条消息:
RemovedInDjango18Warning:commit_manually 已弃用,取而代之的是 设置自动提交。
如何使用 set_autocommit 实现相同的逻辑?
【问题讨论】:
-
在
super()中使用self.__class__通常是个坏主意。请参阅此答案以获得解释:stackoverflow.com/a/18208725/2615075
标签: python django django-models overriding