Django REST PATCH 请求字段为必填问题

问题描述 投票:0回答:1

我有一个学生模型。我想更新一些特定的字段。但是,当我去更新一两个字段但另一个字段值保持原样时,哪些字段没有更改这些字段会显示此错误**“此字段是必需的。”。 **

这是我的模型。

class Student(models.Model):
    teacher=models.ForeignKey(Teacher, on_delete=models.CASCADE)
    name=models.CharField(max_length=20)
    level=models.CharField(max_length=20)

这是我的观点

class StudentUpdateDelete(APIView): 
    def patch(self, request, id):
        student=Student.objects.filter(pk=id).first()
        serializer=StudentSerializer(student, data=request.data)

        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

上面的模型有 3 个字段,但我只想使用 patch 方法更改 name 字段。

here is postman request image

python html django django-rest-framework insert-update
1个回答
1
投票

如果您想使用

PATCH
方法更新特定字段,请在初始化
partial=True
时设置
serializer

所以,按照你的观点,它是:

class StudentUpdateDelete(APIView): 
    def patch(self, request, id):
        student=Student.objects.filter(pk=id).first()
        serializer=StudentSerializer(student, data=request.data, partial=True)

        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
© www.soinside.com 2019 - 2024. All rights reserved.