首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Djoser创建相关模型

使用Djoser创建相关模型
EN

Stack Overflow用户
提问于 2020-01-11 03:39:00
回答 1查看 294关注 0票数 0

我正在尝试覆盖Django中的默认用户创建。我使用的是Django Rest框架和Djoser。我在这里找到了实现它的非常好的技巧:https://stackoverflow.com/a/49096275/9123009

但是我有一个自定义的配置文件模型,叫做: Userprofile,它与我的自定义用户模型有OneToOneField关系。

这是我的序列化程序:

代码语言:javascript
复制
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/ endopoint发出以下POST请求时:

代码语言:javascript
复制
{   
    "email": "adnan@test115.se",
    "password": "xxxxxx",
    "usr_profile": {
      "first_name": "adnan",
      "last_name": "erkoc",
      "cell_no": "23233"
    },
} 

我一直收到一个错误,User.profile必须是Userprofile实例。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-11 04:46:02

这个问题并不是特别与Djoser有关,而是与DRF本身有关。

您可以在DRF文档中找到答案

Writable nested serializers

代码语言:javascript
复制
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')

    def create(self, validated_data):
        usr_profile = validated_data.pop('usr_profile')
        user = UserModel.objects.create(**validated_data)
        UserProfile.objects.create(user=user, **usr_profile)
        return album
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59688033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档