我想创建一个视图,我保存一个对象,但我想撤消,如果引发一些异常保存。这是我试过的:Django - 回滚保存与交易原子
class MyView(View):
@transation.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 undome
# Whant am I missing?
except exception.NotAcceptable, e:
# do something
我在做什么错?即使在引发异常时some_object
仍然在DataBase中。
此视图适用于API,因此我认为我需要处理任何可能的错误以提供propper json响应。有没有办法做到这一点与原子装饰? – Gocht
与装饰者imho不同,因为它处理函数外的事务。上下文管理器的好例子! – jpic
您必须在try ... except块中包含一个原子块,如答案中所示。如果需要,您也可以在视图上使用原子装饰器。 – Alasdair