È questo l'unico modo per creare la convalida del modello personalizzato? Per farlo usando le forme? Cosa succede se voglio inviare dati al database tramite mezzi diversi dalle forme?La convalida del modello Django è gestita tramite l'API dei moduli?
risposta
Attualmente Django non fornisce alcuna convalida a livello di modello (oltre alle convalide di base "NOT NULL", "UNIQUE" e di lunghezza). Questo è nella lista TODO, ma molto probabilmente non si adatterà alla prossima versione 1.1.
È possibile eseguire attività relative alla convalida nel metodo save()
del proprio modello o utilizzare il segnale before_save
(l'aumento dell'eccezione nel gestore di segnale comporterà il rollback della transazione).
In generale, si dovrebbe essere in grado di gestire ciò che si desidera tramite il built-in field types e le loro opzioni o il model's meta options. È inoltre possibile eseguire override the save method per convalidare/igienizzare. Se ciò non è sufficiente, è possibile creare il proprio field type.
Il problema è che non esiste un buon comportamento previsto. Cosa dovrebbe succedere? Dovrebbe essere sollevata un'eccezione? I campi sono solo un'astrazione a livello di database, quindi non ci dovrebbero essere più informazioni in là di ciò che il database deve sapere.
La convalida del modello sarà disponibile a breve nella versione 1.2 di Django. È disponibile al momento se si utilizza un checkout Django attuale del trunk.
Sono ora disponibili vari metodi clean
. Vedi http://docs.djangoproject.com/en/dev/ref/models/instances/#id1 per i dettagli.
- 1. Convalida del modulo Javascript Django
- 2. Convalida dichiarativa dei moduli in Java/Swing
- 3. Laravel 4 Convalida del modello rispetto alla convalida del controller
- 4. Convalida del campo modello Django senza modulo personalizzato
- 5. Mantenimento dei valori dei moduli dopo la posta (non fa parte del modello)
- 6. È possibile mostrare il testo di aiuto del modello come attributo titolo sui moduli in Django?
- 7. Eccezione Django non gestita
- 8. ExtJS: convalida del modulo con il modello
- 9. FluentValidation convalida del nome univoco tramite database
- 10. Convalida del modello con NancyFX
- 11. Django: calcolare la somma dei valori della colonna tramite query
- 12. Django: più modelli in un modello utilizzando i moduli
- 13. Come verificare se la variabile del modello django è definita?
- 14. Django - come determinare se la classe del modello è astratta
- 15. django previene l'eliminazione dell'istanza del modello
- 16. django m2m_changed con personalizzato tramite il modello
- 17. Convalida modulo in django
- 18. Convalida dei moduli di plugin Jenkins con Ruby
- 19. Convalida del modulo Django: rendere condizionale la parola "richiesto"?
- 20. Visualizzazione convalida del modello rispetto alla convalida del modello di dominio
- 21. Aggiunta della validazione del modello Django personalizzato
- 22. ASP.NET MVC: la convalida dell'annotazione dei dati è sufficiente?
- 23. Serializzazione Django del modello ereditato
- 24. Convalida dell'oggetto modello Python
- 25. La convalida del modulo Bootstrap convalida tutti i campi all'interno dello stesso gruppo di moduli
- 26. visualizzazione di errori di convalida del modulo django per ModelForms
- 27. La chiamata EWS tramite l'API gestita 2.2 non restituisce mai
- 28. Convalida moduli symfony2 con campi aggiuntivi
- 29. Separazione dell'input del modulo e della convalida del modello in Django?
- 30. Convalida del modulo HTML forzato tramite JavaScript