Django REST Framework - Дополнительное поле в ModelSerializer - PullRequest
0 голосов
/ 16 марта 2020

В моем ModelSerializer я хочу добавить обязательное поле re_password.

. Я хочу использовать его при создании модели пользователя, чтобы проверить, равно ли re_password поле password.

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        re_password = serializers.CharField(allow_blank=False, write_only=True)
        fields = ('email','password')

    def validate_password(self, password):
        password, re_password = itemgetter('password', 're_password')(self.initial_data)

        if not password == re_password:
            raise serializers.ValidationError('Passwords must be the same.')

Моя проблема в том, что когда я добавляю re_password к полям, я получаю ошибку:

Field name `re_password` is not valid for model `User`.

(что очевидно в данном случае)

Но если нет, сериализатор не вижу моего дополнительного поля.

Моя цель - получить следующую ошибку, когда в запросе POST нет поля re_password:

"re_password": [
    "This field is required."
]

Я знаю, что могу написать код, чтобы проверить это, но, может быть, есть способ для сериализатора сделать это?

1 Ответ

0 голосов
/ 16 марта 2020

required по умолчанию True. allow_blank по умолчанию False CharField

Попробуйте это:

class UserSerializer(serializers.ModelSerializer):
    re_password = serializers.CharField(write_only=True)
    class Meta:
        model = User
        fields = ['email', 'password', 're_password']
...