在django中创建新用户不会提供哈希密码

时间:2016-02-24 06:07:52

标签: python django django-rest-framework

我正在尝试使用django rest framework中的post请求创建用户。

这是我的序列化代码:

class UserSerializer(serializers.ModelSerializer):
    favorites = serializers.PrimaryKeyRelatedField(many=True, queryset=Favorite.objects.all())
    class Meta:
        model = User
        fields = ('id', 'username','password','favorites')
        extra_kwargs = {
            'password': {
                'write_only': True,
            },
            'confirm_password': {
                'write_only': True,
            },
            'favorites':
            {
                'read_only': True,
            },
        }

    def create(self, validated_data):
        return User.objects.create(**validated_data) 

对于create方法我也使用了这个实现:

def create(self, validated_data):
    user = User(username=validated_data['username'])
    user.set_password(validated_data['password'])
    user.save()
    return user

在我的管理面板中,它表示已创建的用户:

Invalid password format or unknown hashing algorithm.

我应该改变什么?

2 个答案:

答案 0 :(得分:3)

User的经理create_user()上有一种特殊的方法,可以完全按照您的需要进行操作

答案 1 :(得分:0)

这个答案修正了它: https://stackoverflow.com/a/29391122/355641

我想使用get_user_model就是解决方案。