【发布时间】:2017-12-19 09:50:34
【问题描述】:
我在使用序列化程序在 django rest 框架上制作 api 时感到困惑,请告诉我 save()、create() 和 update() 方法之间的确切区别,我的代码示例如下,
View.py
class AddUser(views.APIView):
serializer_class = UserForAdminSerializer
def post(self, request, *args, **kwargs):
serializer = UserForAdminSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
serializers.py
class UserForAdminSerializer(serializers.ModelSerializer):
first_name = serializers.CharField(max_length=30)
last_name = serializers.CharField(max_length=30)
name = serializers.CharField(max_length=30)
password = serializers.CharField(max_length=20, style={'input_type': 'password'})
class Meta:
model = User
fields = ('id', 'url', 'first_name', 'last_name', 'name', 'username', 'email', 'password',
'total_exp_year', 'total_exp_month', 'voteup_count', 'is_featured',
'is_active', 'headline', 'description', 'profile_picture', )
def create(self, validated_data):
password = validated_data.pop('password', None)
instance = self.Meta.model(**validated_data)
if password is not None:
instance.set_password(password)
instance.save()
return instance
在 view.py 文件中的上述代码上,我使用了 save() 方法,而 serializers.py 使用了 save() 或 update() 方法,所以请解释一下它是如何工作的,并清除我在 save() 和 create() 之间的混淆
【问题讨论】:
标签: django python-3.x django-rest-framework