Django 更新密码 last_name 为空
Django update password made last_name empty
我正在使用 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
变空了!!
如何预防?
这段代码(在语法上是无效的(我假设你复制粘贴不正确))是罪魁祸首
data={'last_name': request.data.get('last_name', ''),
'password': hashed_pass,
partial=True)
如果姓氏不在 post 数据中,您会将姓氏设置为空白。您可能正在寻找类似的东西:
data={'last_name': request.data.get('last_name', user.last_name),
'password': hashed_pass}
这会导致保留当前姓氏。
我正在使用 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
变空了!!
如何预防?
这段代码(在语法上是无效的(我假设你复制粘贴不正确))是罪魁祸首
data={'last_name': request.data.get('last_name', ''),
'password': hashed_pass,
partial=True)
如果姓氏不在 post 数据中,您会将姓氏设置为空白。您可能正在寻找类似的东西:
data={'last_name': request.data.get('last_name', user.last_name),
'password': hashed_pass}
这会导致保留当前姓氏。