【发布时间】:2020-04-28 11:29:36
【问题描述】:
我正在尝试覆盖 Django 中的默认用户创建。我正在使用 Django Rest Framework 和 Djoser。我在这里找到了很好的实现技巧:https://stackoverflow.com/a/49096275/9123009
但我有自定义配置文件模型,称为:与我的自定义用户模型具有 OneToOneField 关系的 Userprofile。
这是我的序列化器:
class UserRegistrationSerializer(serializers.ModelSerializer):
usr_profile = UserprofileSerializer()
email = serializers.CharField()
password = serializers.CharField(
write_only=True,
style={'input_type': 'password'}
)
class Meta:
model = get_user_model()
fields = ('email', 'password', 'usr_profile')
当我尝试向 /auth/users/ 端点发出以下 POST 请求时:
{
"email": "adnan@test115.se",
"password": "xxxxxx",
"usr_profile": {
"first_name": "adnan",
"last_name": "erkoc",
"cell_no": "23233"
},
}
我不断收到 User.profile 必须是 Userprofile 实例的错误。
【问题讨论】:
-
您是否不需要像您提到的示例中那样覆盖
from djoser.serializers import UserCreateSerializer以使其工作? -
是的,我正在使用这条线路:
from djoser.serializers import UserCreateSerializer as BaseUserRegistrationSerializer -
1) 您是否有所有 settings.py 的工作示例、自定义序列化程序以及为使自定义序列化程序工作共享所做的任何其他工作(例如 GitHub 要点)? 2)在您完成此操作并将所有字段添加到 Meta 类的字段属性后,注册端点是否按预期接受所有字段?我发现自己在自定义序列化程序中继承了 BaseUserRegistrationSerializers 的情况,我已将此序列化程序包含在 settings.py 的 DJOSER 对象中,但发布请求仍然不接受这些字段。
标签: django django-rest-framework djoser