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

fbcarpbf  于 2023-06-25  发布在  Go
关注(0)|答案(1)|浏览(120)

我有一个学生模型。我想更新一些特定的字段。但当我去更新一个或两个字段,但其他字段的值是因为它是那么哪些领域没有改变这些领域显示此错误**“这一领域是必需的。"。**

这是我的模型

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)

Avobe模型有3个字段,但我只想使用补丁方法更改name字段。
here is postman request image

t9eec4r0

t9eec4r01#

如果要使用PATCH方法更新特定字段,请在初始化serializer时设置partial=True
因此,对于你的观点,它将是:

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)

相关问题