양식을 제출할 때 두 개의 개체를 데이터베이스에 저장해야합니다. 그러나 첫 번째 저장과 두 번째 저장 사이에 오류가 있으면 데이터베이스의 첫 번째 개체가 계속 표시됩니다.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 트랜잭션을 롤백 할 수 있습니까?
(나는 데코레이터 @ transaction.commit_on_success를 넣으려고했지만 obj1은 여전히 데이터베이스에 저장되어있다.)
어떤 데이터베이스를 사용하고 있습니까? – second