Warning: count(): Parameter must be an array or an object that implements Countable in /home/xs638785/agile-software.site/public_html/wp-content/plugins/rich-table-of-content/functions.php on line 490
Model に紐づく Field を Serializer のフィールドとして自動的に定義してくれる
modelをUserModel
fieldsはレスポンスで表示する内容を設定します。
extra_kwargsは既存のフィールドに属性を追加することができます。’write_only’:Trueとしている理由はSerializer から値を入れたいけど、読み出しはしたくないためです。また、パスワードの入力を必須にしています。
create_userをvalidataにすることでハッシュ化してデータベースに保存することができるcreate()
,update()
メソッドは、serializer.save()
が呼ばれた時にどのようにインスタンスを作成・変更するかを規定する。
create()メソッド
ModelSerializer
パスワードのフィールドをハッシュ化して登録する
from rest_framework import serializers
from .models import Task
from django.contrib.auth.models import User
from rest_framework.authtoken.models import Token
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('id','username','passsword')
extra_kwargs = {'password':{'write_only':True,'required':True}}
def create(self,validated_data):
user = User.objects.create_user(**validated_data)
Token.object.create(user=user)
return user