Как написать пользовательскую валидацию на фреймворке django rest?
Как написать пользовательские валидации в drf. У меня есть функция validate на сериализаторе. Кто-нибудь может помочь, что не так с моим кодом? мои представления:
class MyCustomView(ListCreateAPIView):
def create(self, request, *args, **kwargs):
serializer = MyCustomSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
мой сериализатор:
class MyCustomView(serializers.Serializer):
name = serializers.CharField(required=True, max_length=64)
address = serializers.CharField(required=True, max_length=64)
def validate(self, attrs):
if not attrs.get('name'):
raise serializers.ValidationError('Name field is required.')
когда я делаю запрос с пустым именем и адресом, он выдает ошибку drf по умолчанию. Как переопределить эту функцию?
удалите required=True из обоих ваших полей.
но лучше не беспокоить бэкенд пустыми данными и поручить это фронтенду.
Вы забыли вернуть attrs после валидации.
def validate(self, attrs):
if not attrs.get('name'):
raise serializers.ValidationError('Name field is required.')
return attrs