Django 用户更新不起作用
Django user update is not working
我有这个用户序列化程序:
class SimpleUser(models.Model):
class meta:
abstract = True
email = models.EmailField(_('email address'), blank=False)
password = models.CharField(_('password'), max_length=128)
first_name = models.EmailField(_('first name'), blank=True)
class UserSerializer(ModelSerializer):
class Meta:
model = SimpleUser
这是我的观点:
class UserView(APIView):
def patch(self, request, user_id):
firstname = request.data.get('first_name', '')
email = request.data.get('email', '')
password = request.data.get('password', '')
user = User.objects.get(id=user_id)
serializer = UserSerializer(instance=user, data=request.data, partial=True)
if serializer.is_valid():
serializer.save()
return Response(status=status.HTTP_200_OK)
return Response(status=status.HTTP_400_BAD_REQUEST)
我发送了这个 json 请求,但只有 password
和 email
被更新,first_name
没有更新。
{
"password":"6524266",
"email":"HH@bb.com",
"first name":"dsfxvxc"
}
我得到状态 200 OK
并且可以在 serializer.save()
中获取保存的对象
我的代码有什么问题?
您将名字设置为电子邮件字段
first_name = models.EmailField(_('first name'), blank=True)
将其更改为 CharField 或相关字段,类似这样,
first_name = models.CharField(max_length=30)
我有这个用户序列化程序:
class SimpleUser(models.Model):
class meta:
abstract = True
email = models.EmailField(_('email address'), blank=False)
password = models.CharField(_('password'), max_length=128)
first_name = models.EmailField(_('first name'), blank=True)
class UserSerializer(ModelSerializer):
class Meta:
model = SimpleUser
这是我的观点:
class UserView(APIView):
def patch(self, request, user_id):
firstname = request.data.get('first_name', '')
email = request.data.get('email', '')
password = request.data.get('password', '')
user = User.objects.get(id=user_id)
serializer = UserSerializer(instance=user, data=request.data, partial=True)
if serializer.is_valid():
serializer.save()
return Response(status=status.HTTP_200_OK)
return Response(status=status.HTTP_400_BAD_REQUEST)
我发送了这个 json 请求,但只有 password
和 email
被更新,first_name
没有更新。
{
"password":"6524266",
"email":"HH@bb.com",
"first name":"dsfxvxc"
}
我得到状态 200 OK
并且可以在 serializer.save()
我的代码有什么问题?
您将名字设置为电子邮件字段
first_name = models.EmailField(_('first name'), blank=True)
将其更改为 CharField 或相关字段,类似这样,
first_name = models.CharField(max_length=30)