Je crée actuellement un api basé sur DRF.I ont un modèle qui ressemble à:Comment écrire un champ personnalisé Validation pour ModelSerializers dans Django Rest Framework (DRF) similaire à Form Validation dans Django?
class Task(models.Model):
name = models.CharField(max_length = 255)
completed = models.BooleanField(default = False)
description = models.TextField()
text = models.TextField(blank = False, default = "this is my text")
def __unicode__(self):
return self.name
et le sérialiseur correspondant pour ce modèle est que:
class TaskSerializer(serializers.ModelSerializer):
class Meta:
model = Task
fields = ('name','description','completed','text')
Maintenant, ma question est que je Je veux valider le champ 'nom' de mon modèle en prenant des données. Par exemple, je peut mettre fin à la vérification du prénom ou du nom de l'utilisateur par un code Python similaire à un formulaire Django:
def clean_name(self):
name = form.cleaned_data.get('name')
first,second = name.split(' ')
if second is None:
raise forms.ValidationError("Please enter full name")
Je sais de ce qu'on appelle « validate_ (fieldname) » en classe Serializers.serializer. Mais je veux que ce soit utilisé dans Serializers.ModelSerializer à la place. (Juste similaire à la validation des formulaires personnalisés dans Django)
Y a-t-il quelque chose de similaire à clean_data dans les sérialiseurs? –
Oui, il existe 'serializer.validated_data' qui est accessible après l'appel de' .is_valid() 'sur le sérialiseur. –
Merci. Ça marche. –