私は管理者モジュールをデフォルトのDjangoユーザーモジュールから拡張しました。Django Restフレームワークバリデーターはextra_kwargs内で実行されません
Django Rest Frameworkでは、このモジュールのシリアライザをユーザ名と電子メールバリデータで作成します。
私がインライン化のバリデータを宣言するときにすべてがうまく行く:
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',
]
をしかし、私は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())]
},
}
追加フィールドを定義する場合、この問題はsource
を使用してから来るんまたは、他の何か?
場合、印刷の出力(のrepr(AdministratorCreateUpdateSerializerを()))を印刷して参照してみてくださいフィールド内にバリデーターがあります –