我正在尝试使用 Django Rest Framework 3.1.1 在 POST 中创建用户。我需要使用内置方法来创建加密密码,所以我试图覆盖 ModelSerializer 上的保存方法,但我显然不太了解 Django/DRF 来执行此操作。有没有一种直接的方法可以做到这一点?
当我尝试下面的代码时,出现错误:
unbound method set_password() must be called with User instance as first argument (got unicode instance
代替)
from django.contrib.auth.models import User
from rest_framework import serializers
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
def save(self):
email = self.validated_data['email']
username = self.validated_data['username']
password = User.set_password(self.validated_data['password'])
请您参考如下方法:
尝试做这样的事情:
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('email', 'username', 'password')
extra_kwargs = {'password': {'write_only': True}}
def create(self, validated_data):
user = User(
email=validated_data['email']
username=validated_data['username'],
)
user.set_password(validated_data['password'])
user.save()
return user
