Валидатор полей Django Serializer не вызывается

Невызов валидатора поля сериализатора кажется распространенной проблемой, но я не могу найти правильное решение. У меня есть обычный (НЕ МОДЕЛЬНЫЙ) сериализатор с полем URLField и пользовательским валидатором для этого поля. Валидатор поля не вызывается при выполнении функции is_valid(), вместо него вызывается встроенный URLValidator.

Вот пользовательский валидатор (только для того, чтобы избежать ошибки http:// not included):

class OptionalSchemeURLValidator(URLValidator):
    def __call__(self, value):
        if "://" not in value:
            value = "http://" + value
        super(OptionalSchemeURLValidator, self).__call__(value)

Вот сериализатор:

from rest_framework.serializers import Serializer
class DeveloperAccessTokenSerializer(Serializer):
    token = CharField(read_only=True)
    company_website = URLField(
        required=False,
        validators=[OptionalSchemeURLValidator()],
    )

    def create(self, validated_data):
        self.token = jwt.encode(
            jwt_payload, settings.SECRET_KEY, algorithm="HS256"
        )
        self.company_website = validated_data.get("company_website", None)
        return self.company_website

Вот как используется сериализатор:

def post(self, request, *args, **kwargs):
    context = {"request": request}
    ser = self.serializer_class(data=request.data, context=context)
    ser.is_valid(raise_exception=True)
    token = ser.save()
    return Response(token, status=HTTP_201_CREATED)

В функции is_valid() возникает ошибка валидации:

rest_framework.exceptions.ValidationError: {'company_website': [ErrorDetail(string='Введите правильный URL.', code='invalid')]}

.

Входное значение для поля равно

www.my-website.com

Вернуться на верх