Django Rest Framework validator not executing inside extra_kwargs

I have an Administrator module extended from the default Django user module.

In the Django Rest Framework, I am creating a serializer for this module using username and email validators.

Everything goes well when I declare inlined validators:

class AdministratorCreateUpdateSerializer(ModelSerializer):

    username = serializers.CharField(
        source='user.username',
        validators=[UniqueValidator(queryset=User.objects.all())]
    )
    email = serializers.EmailField(
        source='user.email',
        validators=[UniqueValidator(queryset=User.objects.all())]
    )
    password = serializers.CharField(
        source='user.password',
        allow_blank=True,
        style={'input_type': 'password'}
    )
    first_name = serializers.CharField(
        source='user.first_name'
    )
    last_name = serializers.CharField(
        source='user.last_name'
    )

    class Meta:
        model = Administrator
        fields = [
            'username',
            'email',
            'password',
            'first_name',
            'last_name',
        ]

But validators fail when I declare it inside extra_kwargs:

class AdministratorCreateUpdateSerializer(ModelSerializer):

    username = serializers.CharField(
        source='user.username',
    )
    email = serializers.EmailField(
        source='user.email',
    )
    password = serializers.CharField(
        source='user.password',
        allow_blank=True,
        style={'input_type': 'password'}
    )
    first_name = serializers.CharField(
        source='user.first_name'
    )
    last_name = serializers.CharField(
        source='user.last_name'
    )

    class Meta:
        model = Administrator
        fields = [
            'username',
            'email',
            'password',
            'first_name',
            'last_name',
        ]
        extra_kwargs = {
            'username': {
                'validators': [UniqueValidator(queryset=User.objects.all())]
            },
            'email': {
                'validators': [UniqueValidator(queryset=User.objects.all())]
            },
        }

Does this problem occur when used sourceto define add fields or something else?

+4
source share
1 answer

Source: https://habr.com/ru/post/1680301/


All Articles