У меня есть CreateView для ModelForm с методом form_valid(), который довольно рано вызывает form.save() (чтобы я мог получить идентификатор объекта), затем продолжает делать некоторые другие вещи (создавать некоторые связанные объекты , и отправьте несколько писем).Does form_valid в CreateView в django откатывает сохранение, если возникает ошибка?
def form_valid(self, form):
context = self.get_context_data()
preferences_formset = context['preferences_formset']
if preferences_formset.is_valid():
student = form.save()
...
send_email_one()
send_email_two()
send_email_three()
return HttpResponseRedirect(self.get_success_url())
Недавно я обнаружил, что некоторые из дальнейшей обработки были некоторые ошибки, приводящие к необработанное исключение в некоторых случаях, когда send_email_three называется. Из моих журналов видно, что send_email_one и send_email_two вызываются, а исключение происходит в send_email_three. Однако, когда это произошло, я не могу найти объекты в БД. У меня создалось впечатление, что form.save() должен создавать и сохранять объект в БД - это так или же он откатывает сохранение, если функция form_valid ошибочна в дальнейшем?
Я использую Django 1.8.17
PS: Да, я знаю, что я должен иметь электронную почту в отложенной задаче; которые будут реализованы позже.