Как написать пользовательскую валидацию на фреймворке 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
Вернуться на верх