Nella mia classe CreateView
sto Superamento della funzione form_valid()
come segue:Django: Metodo CBV form_valid() non chiamato
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)
Ma, come si è visto, il metodo form_valid
non viene mai chiamato perché il user
non viene mai stampato . È interessante notare che il metodo clean
nel forms.py viene chiamato.
Nessun errore visualizzato (pertanto non è necessario visualizzare una traccia). L'utente viene nuovamente reindirizzato al modulo. Quale potrebbe essere la ragione di questo comportamento? Sono in esecuzione su Django 1.5 e Python 2.7.
Hai provato un'istruzione di stampa nel metodo 'form_invalid' e stai usando' POST'? –
creazione del metodo 'form_invalid' ha rivelato il problema. Grazie per il suggerimento. Se scrivi il tuo commento come risposta, sono felice di accettarlo e votarlo. Grazie. – neurix
Mi sono imbattuto in un problema simile e anche 'form_invalid' mi ha aiutato. Mi sono reso conto che il modulo stava visualizzando un errore per il quale non ero accomodante nel modello, quindi non è stato visualizzato. È simile a quello che hai incontrato @neurix? –