我想創建一個視圖,我保存一個對象,但我想撤消,如果引發一些異常保存。這是我試過的: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