如何在 Django REST 框架序列化程序中添加额外的 false 字段?
How to add an extra false field in the Django REST framework serializer?
我正在使用 Django 的内置 User
模型在 Django REST 框架 (DRF) 中创建注册 api。我希望客户 post 这样的请求
{
username:'user1',
email:'email@email.com,
password:'password123',
confirm_password:'password123'
}
问题是在 django 的内置 'User' 数据库中没有像 confirm_password
这样的字段。我不想向数据库添加额外的列,并且只需要这个虚假字段来验证这两个密码而不是将其包含在数据库中。我写了这个模型序列化器
class RegSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('id','username', 'email', 'password', 'confirm_password')
extra_kwargs = {'password': {'write_only': True},'confirm_password': {'write_only': True}}
并通过
创建了用户
User.objects.create_user(request.data['username'], request.data['email'], request.data['password'])
但是显示这个错误
django.core.exceptions.ImproperlyConfigured: Field name confirm_password
is not valid for model User
.
我们如何在 Django REST 框架序列化器中添加额外的假字段?
您可以为序列化程序定义一个新字段 class 作为,
class RegSerializer(serializers.ModelSerializer):
<b>confirm_password = serializers.CharField(write_only=True)</b>
class Meta:
model = User
fields = ('id', 'username', 'email', 'password', 'confirm_password')
extra_kwargs = {
'password': {'write_only': True}
}
我正在使用 Django 的内置 User
模型在 Django REST 框架 (DRF) 中创建注册 api。我希望客户 post 这样的请求
{
username:'user1',
email:'email@email.com,
password:'password123',
confirm_password:'password123'
}
问题是在 django 的内置 'User' 数据库中没有像 confirm_password
这样的字段。我不想向数据库添加额外的列,并且只需要这个虚假字段来验证这两个密码而不是将其包含在数据库中。我写了这个模型序列化器
class RegSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('id','username', 'email', 'password', 'confirm_password')
extra_kwargs = {'password': {'write_only': True},'confirm_password': {'write_only': True}}
并通过
创建了用户User.objects.create_user(request.data['username'], request.data['email'], request.data['password'])
但是显示这个错误
django.core.exceptions.ImproperlyConfigured: Field name
confirm_password
is not valid for modelUser
.
我们如何在 Django REST 框架序列化器中添加额外的假字段?
您可以为序列化程序定义一个新字段 class 作为,
class RegSerializer(serializers.ModelSerializer):
<b>confirm_password = serializers.CharField(write_only=True)</b>
class Meta:
model = User
fields = ('id', 'username', 'email', 'password', 'confirm_password')
extra_kwargs = {
'password': {'write_only': True}
}