In my CreateView
class I am overriding the form_valid()
function as follows:
class ActionCreateView(CreateView):
model = Action
form_class = ActionCreateForm
success_url = reverse_lazy('profile')
def get_initial(self):
initial = super(ActionCreateView, self).get_initial()
initial['request'] = self.request
return initial
def form_valid(self, form):
form.instance.user = self.request.user
print 'user: %s'%form.instance.user
try:
da = form.cleaned_data['deadline_date']
ti = datetime.now()
form.instance.deadline = datetime(da.year, da.month, da.day, ti.hour, ti.minute, ti.second )
except Exception:
raise Http404
return super(ActionCreateView, self).form_valid(form)
But as it turns out, the form_valid
method is never called because the user
is never printed. Interestingly, the clean
method in the forms.py is called.
No error is displayed (therefore I do not have a traceback to display). The user is just redirected to the form again. What could be the reason for this behaviour? I'm running on Django 1.5 and Python 2.7.
form_invalid
method, and are you usingPOST
? – Gonzaloform_invalid
method revealed the problem. Thank you for the suggestion. If you write your comment as an answer, I am happy to accept and up vote it. Thank you. – Bioplasmform_invalid
helped me as well. I realized that the form was rendering an error that I was not accommodating for in the template, so it didn't display. Is that similar to what you encountered @neurix? – Changchangaris