2012-09-26 73 views
10

Quiero definir mi propia rutina de validación para un campo particular de un modelo de Django. Quiero que se muestre el mensaje de error en el formulario de administrador, pero también quiero que se realice la misma validación si la entidad se guarda con un código python propio. ¿Hay alguna manera de hacerlo sin romper el principio DRY?Validación de campo Django en Modelo y en Admin?

Respuesta

8

Si desea validar un campo individual, puede write a validator y agregarlo al campo de su modelo.

El validador se ejecutará para el campo cada vez que se llame al método full_clean del modelo. Se ejecutará cada vez que se valida un formulario modelo (incluido en el administrador de Django), pero no se ejecutará automáticamente cuando se guarde la instancia del modelo: debe llamar al full_clean manualmente en el código python.

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

Si quería forzar el validador para ejecutarse cada vez que se guarda el modelo, entonces se podría reemplazar el método guardar y llamar full_clean allí. Tenga en cuenta que esto haría que la validación se ejecute dos veces al usar formularios modelo y el administrador django.

Cuestiones relacionadas