Come si aggiungono errori all'inizio di un modulo dopo aver pulito i dati? Ho un oggetto che deve effettuare una chiamata REST a un'app esterna (google maps) come condizione di pre-salvataggio, e questo può fallire, il che significa che ho bisogno che i miei utenti correggano i dati nel modulo. Così ho pulito i dati e quindi provare a salvare e aggiungere alle errori di forma, se il salvataggio non funziona:aggiungendo errori agli errori di forma di Django .__ all__
if request.method == "POST":
#clean form data
try:
profile.save()
return HttpResponseRedirect(reverse("some_page", args=[some.args]))
except ValueError:
our_form.errors.__all__ = [u"error message goes here"]
return render_to_response(template_name, {"ourform": our_form,},
context_instance=RequestContext(request))
Questa non è riuscito a restituire il testo di errore nel mio unità di test (che sono stati alla ricerca di essa in {{form.non_field_errors}}), e poi quando lo eseguo attraverso il debugger, gli errori non sono stati aggiunti all'errore di form dei caratteri quando raggiungono la riga render_to_response, né da nessun'altra parte nella struttura our_form. Perché non ha funzionato? Come posso aggiungere errori all'inizio di un modulo dopo che è stato pulito?
Sfortunatamente deve essere più sistematico, questo aggiornamento può accadere quando altre parti del sistema cercano di alterare i dati, quindi va oltre il solo modulo. Altrimenti, hai ragione, la forma sarebbe l'ideale. – hendrixski
Non dovrebbe sempre usare i moduli ereditati per fare convalide? –