Когда я отправляю форму, мне нужно сохранить два объекта в базе данных; однако если между первым и вторым сохранением произошел сбой, я все равно вижу первый объект в базе данных.
Поскольку я включил 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 в результате сбоя?
(я также пытался поместить декоратор @action.commit_on_success, но obj1 все еще хранится в базе данных).