2012-09-26 10 views
10

Voglio definire la mia routine di validazione per un campo particolare di un modello Django. Voglio che il messaggio di errore venga visualizzato nel modulo di amministrazione ma voglio anche che la stessa validazione avvenga se l'entità viene salvata dal proprio codice Python. C'è un modo per farlo senza rompere il principio di ASCIUTTO?Convalida del campo Django in Model and in Admin?

risposta

8

Se si desidera convalidare un singolo campo, è possibile aggiungere write a validator al campo del modello.

Il validatore verrà eseguito per il campo ogni volta che viene chiamato il metodo full_clean del modello. Verrà eseguito ogni volta che un modulo del modello viene convalidato (incluso nell'amministratore di Django), ma non verrà eseguito automaticamente quando l'istanza del modello viene salvata - è necessario chiamare manualmente full_clean in codice python.

m = MyModel(x=20) 
m.full_clean() # may raise ValidationError 
m.save() 

Se si voleva forzare il validatore per eseguire ogni volta che il modello viene salvato, allora si potrebbe sovrascrivere il metodo save e chiamare full_clean lì. Si noti che ciò causerebbe l'esecuzione della convalida due volte quando si utilizzano i moduli del modello e l'admin di django.

Problemi correlati