Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在django序列化程序中向用户模型添加新字段_Python_Django - Fatal编程技术网

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

Python 如何在django序列化程序中向用户模型添加新字段,python,django,Python,Django,由于我是django的新手,很抱歉问了一个我无法理解的基本问题 我有一个像这样的序列化程序 class UserProfileSerializer(serializers.ModelSerializer): user = UserSerializer() class Meta: model = UserProfile fields = ('id', 'user') def create(self, validated_data):

由于我是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'email', u'tes1@c.vom11'), (u'name', u'rohdaasais'), (u'password', u'rokl'), (u'phoneNumber', u'2323'),(u'identifier', u'SJAJK77')])
我在视图中有诸如姓名、电子邮件、密码、电话号码之类的字段,如果我打印经过验证的_数据['user'],这些字段会给我这样的数据

[(u'email', u'tes1@c.vom11'), (u'name', u'rohdaasais'), (u'password', u'rokl'), (u'phoneNumber', u'2323')])
现在我想在这个用户中添加一个字段,在保存之前使用该标识符 所以应该是这样的

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'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也是用户模型中的标识符字段:?是的,标识符是用户模型中的一个字段try depth=1,就在这个
字段=('id','User')
的下方,或者更新
UserSerializer()
中的字段选中了这个字段,但不起作用,我的用户模型中有这样的字段,标识符=models.CharField(最大长度=50,默认值=1,唯一值=True)