我使用UserProfileSerializer
验证patch
请求中的字段:
password = request.data.get('password', '')
if password:
if len(password) < 6:
return Response(status=status.HTTP_400_BAD_REQUEST)
hashed_pass = make_password(password)
serializer = UserProfileSerializer(instance=user,
data={'last_name': request.data.get('last_name', ''),
'password': hashed_pass,
partial=True)
else:
serializer = UserProfileSerializer(instance=user, data=request.data, partial=True)
if serializer.is_valid():
serializer.save()
这是我的序列化器:
class UserProfile(models.Model):
class meta:
abstract = True
password = models.CharField(_('password'), max_length=128, blank=True)
last_name = models.CharField(max_length=30, validators=[MinLengthValidator(3)], blank=True)
class UserProfileSerializer(ModelSerializer):
class Meta:
model = UserProfile
当我更新密码时,last_name
空了!!
我如何阻止它?
答案 0 :(得分:1)
这段代码(在语法上无效(我假设你复制粘贴不正确))是责备
data={'last_name': request.data.get('last_name', ''),
'password': hashed_pass,
partial=True)
如果姓氏不在发布数据中,则将姓氏设置为空白。你可能正在寻找类似的东西:
data={'last_name': request.data.get('last_name', user.last_name),
'password': hashed_pass}
导致保留当前姓氏。