I have a serializer that validates fields based on the values of other fields, In the error response I would like to show each field error as a field error as opposed to showing
Similarly to the answer by @Jkk.jonah, this raises a ValidationError
, but it reuses the original exception text without need to re-implement translations:
try:
serializer.fields['field_val1'].fail('required')
except ValidationError as exc:
raise ValidationError({
'field_val1': exc.detail,
})
By default (i.e. on rest_framework.fields.Field
class), available keys are:
default_error_messages = {
'required': _('This field is required.'),
'null': _('This field may not be null.')
}
Subclasses can add their own error messages there (and Serializer
is a subclass of Field
).
BTW, new error messages will be automagically merged with existing (inherited) messages - won't be overridden as might be expected.