example - modelserializer django rest framework
Códigos de validación y mensajes en Django Rest Framework (1)
Agregue algo como esto a su serializador:
def is_valid(self, raise_exception=False):
try:
return super(ClientSerializer, self).is_valid(raise_exception)
except exceptions.ValidationError as e:
if ''email'' in e.detail:
for i in range(len(e.detail[''email''])):
if e.detail[''email''][i] == UniqueValidator.message:
e.detail[''email''][i] = {''code'': ''not-unique''}
raise e
Al usar los campos listos para usar en un serializador, los mensajes de error de validación se ven más o menos así:
{
"product": [
"This field must be unique."
],
"price": [
"This field is required."
]
}
Sin embargo, para la API que estoy escribiendo, me gustaría proporcionar un código de error único para cada validación fallida, para que los clientes puedan responder mediante programación a los errores de validación, o puedan proporcionar sus propios mensajes personalizados en una interfaz de usuario. Idealmente, el error json se vería así:
{
"product": [
{
"code": "unique",
"message": "This field must be unique."
}
],
"price": [
{
"code": "required",
"message": "This field is required."
}
]
}
El enfoque actual que usa ValidationErrors hace esto bastante difícil. Al revisar el código, parece que este tipo de informe de error no se admite actualmente. Sin embargo, estoy buscando un enfoque para anular el manejo de errores para adaptarse a este modelo.