如何在Django序列化程序中向用户模型添加新字段

2024-03-29 10:59:10 发布

您现在位置:Python中文网/ 问答频道 /正文

由于我是刚到django的,很抱歉问了一个很基本的问题,我想不通。你知道吗

我有一个像这样的序列化程序

class UserProfileSerializer(serializers.ModelSerializer):
    user = UserSerializer()

    class Meta:
        model = UserProfile
        fields = ('id', 'user')

    def create(self, validated_data):
        print validated_data['user']
        user = User.objects.create_user(**validated_data['user'])
        user_profile, created = UserProfile.objects.get_or_create(user=user)
        return user

    def get_identifier(self):
        return ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(7))

我有像姓名,电子邮件,密码,电话号码等字段,从视图中可以得到这样的数据,如果我打印验证的\u数据['user']

[(u'email', u'tes1@c.vom11'), (u'name', u'rohdaasais'), (u'password', u'rokl'), (u'phoneNumber', u'2323')])

现在我想在这个用户中再添加一个字段,在保存之前使用哪个标识符 所以应该是这样

[(u'email', u'tes1@c.vom11'), (u'name', u'rohdaasais'), (u'password', u'rokl'), (u'phoneNumber', u'2323'),(u'identifier', u'SJAJK77')])

但当我这么做的时候

validated_data['user']['identifier'] = self.get_identifier()

它并没有工作,并说我正在试图访问不存在的字段,我如何才能添加到用户dict这个

编辑时间:

class UserSerializer(serializers.ModelSerializer):

    class Meta:
        model = User
        fields = ('id', 'email', 'name', 'password', 'picture', 'phoneNumber')

    def create(self, validated_data):
        validated_data['identifier'] = self.get_identifier()
        validated_data['password'] = make_password(validated_data['password'])
        user = super(UserSerializer, self).create(validated_data)
        return user

    def get_identifier(self):
        return ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(7))

我已经编辑了这个问题,还显示了UserSerializer


Tags: nameselfdatagetstringreturnemaildef