Lo scenario è abbastanza straight-forward:messaggi di errore personalizzate in Django serializzatore Resto quadro
Ho un modello con alcuni campi che sono richiesti. Diciamo che uno di questi è uno TextField
che non può essere blank
. Ho anche un ModelSerializer
(Django Rest Framework) che rappresenta quel modello.
Quando una stringa vuota viene utilizzata per impostare quel campo attraverso il serializzatore, l'errore restituito proviene dal modello stesso (This field can't be blank
).
Desidero sovrascrivere i messaggi di errore solo a livello di serializzatore, senza la necessità di ridefinire esplicitamente ogni campo nel serializzatore (che credo sia contrario al principio DRY), dovendo scrivere un metodo validate_
per ciascun campo e aumentare il mio ValidationError
o dover modificare i messaggi di errore nel livello Model
(perché a volte il contesto del messaggio di errore è importante per il mio caso d'uso e il messaggio di errore dovrebbe essere dato di conseguenza).
In altre parole, c'è un modo per ignorare i messaggi di errore nel livello serializzatore così facile come lo è per un ModelForm
:
class MyModelForm(ModelForm):
class Meta:
model = MyModel
error_messages = {"field1": {"required": _("For some reason this is a custom error message overriding the model's default")}}
DRF sta chiamando validatori dei campi Django al momento della convalida. Quindi gli errori arriveranno da qui, non da DRF. L'idea è provare a specificare un messaggio di errore a livello di modello o di campo, perché come posso vedere non c'è modo di ignorare questi messaggi con DRF. – coldmind