Tengo un modelo de Django con un rango de fecha de inicio y finalización. Quiero aplicar la validación para que no haya dos registros con rangos de fechas superpuestos. ¿Cuál es la forma más sencilla de implementar esto para que no tenga que repetirme escribiendo esta lógica?Cómo agregar una validación de modelo de Django personalizada
p. Ej. No quiero volver a implementar esta lógica en un formulario y un ModelForm
y un formulario de administración y del modelo anulado save()
.
Por lo que sé, Django no hace que sea fácil hacer cumplir globalmente este tipo de criterios.
Google no ha sido muy útil, ya que la "validación del modelo" generalmente se refiere a la validación de campos de modelos específicos, y no a los contenidos del modelo completo, o las relaciones entre los campos.
Esto está cerca. También tuve que anular el guardado de mi modelo() y llamar a clean() desde allí. – Cerin
¿Pero para qué? AdminSite (ModelForm) llama a clean() automáticamente. Pero llamar a clean() desde el método save() podría producir ValidationError en un momento inesperado y no se considerará como se esperaba. – alTus
No todo se llama limpio. Esto debe validarse independientemente de dónde se guarde. Una página de sitio rota es preferible a datos corruptos. – Cerin