DRF 3.x で動作する最も簡単なソリューション:
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('id', 'username', 'password', 'email', 'first_name', 'last_name')
write_only_fields = ('password',)
read_only_fields = ('id',)
def create(self, validated_data):
user = User.objects.create(
username=validated_data['username'],
email=validated_data['email'],
first_name=validated_data['first_name'],
last_name=validated_data['last_name']
)
user.set_password(validated_data['password'])
user.save()
return user
他の変更は必要ありません。認証されていないユーザーが新しいユーザー オブジェクトを作成する権限を持っていることを確認してください。
write_only_fields
パスワード(実際には、保存されているハッシュ)が表示されないようにしますが、上書きされcreate
た方法では、パスワードがクリアテキストではなくハッシュとして保存されます。