From fd1eda4c479e9a070e886d95bcf9e3a9b37f59c5 Mon Sep 17 00:00:00 2001 From: Paul Traylor Date: Tue, 16 Apr 2024 14:46:26 +0900 Subject: [PATCH] Reset self.object on form_invalid self.object will be configured in form_invalid, so we can remove it from the top. We want to ensure that self.object is clean when we have to re-render the page on failed submission, so we move it to form_invalid --- promgen/views.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/promgen/views.py b/promgen/views.py index f14460481..49651139f 100644 --- a/promgen/views.py +++ b/promgen/views.py @@ -773,12 +773,13 @@ def get_context_data(self, **kwargs): return context def form_invalid(self, **kwargs): - """If the form is invalid, render the invalid form.""" + # Typically self.form will get a copy of self.object stored as self.form.instance, but if + # we have an invalid form, we want to ensure a clean copy of self.object when rendering the + # page (and we can leave the dirty copy as part of self.form.instance). + self.object = self.get_object() return self.render_to_response(self.get_context_data(**kwargs)) def post(self, request, *args, **kwargs): - self.object = self.get_object() - # Save a copy of our forms into a context var that we can use # to re-render our form properly in case of errors context = {}