當我提交表單時,我必須將兩個對象保存到數據庫;但是,如果在第一次和第二次保存之間出現故障,我仍會看到數據庫中的第一個對象。Django事務請求失敗,但仍部分提交
因爲我在主要設置中啓用了TransactionMiddleware,所以我希望(並且正在期待)請求失敗,以回滾我作爲此請求的結果所做的任何數據庫更新。
我的代碼如下:
def submit(request):
form1 = Form1(request.POST)
form2 = Form2(request.POST)
obj1 = form1.save()
# simulate an error
raise Exception('spam', 'eggs')
obj2 = form2.save(commit=False)
obj2.obj1 = obj1
form2.save()
當我後來查詢數據庫,OBJ1存在。作爲失敗的結果,我如何獲得它來回滾obj1事務?
(我也試過把decorator @ transaction.commit_on_success,但obj1仍然存儲在數據庫中)。
你使用了哪個數據庫? – second