W moim CreateView
klasie mam nadrzędnych funkcji form_valid()
następująco:Django: CBV metoda form_valid() nie nazywa
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)
Ale jak się okazuje, metoda form_valid
nigdy nazywa ponieważ user
nigdy nie jest drukowany . Co ciekawe, wywoływana jest metoda clean
w pliku forms.py.
Nie wyświetla się żaden błąd (w związku z tym nie mam żadnego śledzenia do wyświetlenia). Użytkownik jest ponownie przekierowywany do formularza. Jaki może być powód takiego zachowania? Używam Django 1.5 i Python 2.7.
Czy wypróbowałeś polecenie drukowania w metodzie 'form_invalid' i używasz' POST'? –
Tworzenie metody "form_invalid" ujawniło problem. Dziękuję za sugestię. Jeśli napiszesz swój komentarz jako odpowiedź, z przyjemnością przyjmiemy go i zagłosujemy. Dziękuję Ci. – neurix
Wpadłem na podobny problem, a pomógł mi również "form_invalid". Zdałem sobie sprawę, że w formularzu wystąpił błąd, którego nie uwzględniłem w szablonie, więc nie wyświetlił się. Czy to jest podobne do tego, co spotkałeś @neurix? –