Tengo un modelo de reserva que debe verificar si el artículo que se está reservando está disponible. Me gustaría tener la lógica detrás de averiguar si el artículo está disponible centralizado, de modo que no importa dónde guarde la instancia, este código valida que se pueda guardar.Mostrando excepciones de validación de modelo personalizado en el sitio de administración de Django
En el momento en que tienen este código en una costumbre función de ahorro de mi clase del modelo:
def save(self):
if self.is_available(): # my custom check availability function
super(MyObj, self).save()
else:
# this is the bit I'm stuck with..
raise forms.ValidationError('Item already booked for those dates')
Esto funciona bien - el error se eleva si el artículo no está disponible, y mi artículo no se guarda. Puedo capturar la excepción de mi código de formulario de inicio, pero ¿qué pasa con el sitio de administración de Django? ¿Cómo puedo hacer que mi excepción se muestre como cualquier otro error de validación en el sitio de administración?
supongo que quería escribir, en un solo lugar, algo que se aseguró de que una instancia no se pudo guardar que rompió mis reglas de validación - dado que se llama a la función de guardar, no importa dónde haga su guardado (administrador o front-end), tiene sentido ponerlo allí. –
Sí, pero ValidationError se usa para informar al usuario final que la información que está ingresando en un formulario es incorrecta. Si debe asegurarse de que se mantienen algunas reglas, ¿quizás debería usar una afirmación? O bien, si guardar puede simplemente fallar, entonces quizás debería tener un código de retorno, ya sea que se haya guardado correctamente. No sé, qué es exactamente lo que necesitas. – gruszczy
Ese enlace no le responde en absoluto. Él quiere reutilizar la validación en su modelo en administración. No volver a aplicar la validación en el administrador ... – Cerin