我正在尝试创建一个视图,在保存对象时,如果出现异常,我想要撤销该操作。这是我尝试的代码:
class MyView(View):
@transaction.atomic
def post(self, request, *args, **kwargs):
try:
some_object = SomeModel(...)
some_object.save()
if something:
raise exception.NotAcceptable()
# When the workflow comes into this condition, I think the previous save should be undone
# What am I missing?
except exception.NotAcceptable, e:
# do something
我做错了什么?即使出现异常,some_object
仍然在数据库中。
with transaction.atomic
。我的观点是,你可以同时为视图使用@transaction.atomic
。这仍然很有用,如果你想要do_something()
和try..except块的结果在一个事务中,要么成功要么失败。 - Alasdair