首页 > 解决方案 > 更新 django rest 框架中的字段

问题描述

我有一个名为 Customer 的类:

class Customer(models.Model):
   name   = models.CharField(max_length=250)
   status = models.IntegerField()

序列化器是:

class CustomerSerializer(serializers.ModelSerilizer):
    class Meta:
    model = Customer
    fields = '__all__'

现在如何使用 POST 方法仅更改/更新状态字段。我在这里使用功能基础视图。我想获得以下价值:

{
     "status": 1
}

标签: djangodjango-rest-frameworkdjango-serializer

解决方案


如果您使用基于类的视图,这会更容易。您可以轻松创建一个UpdateStatusView更新RetrieveUpdateAPIView发送patch请求。

但是,由于您使用的是基于函数的视图,我仍然建议您使用PATCH请求而不是POST请求,这样可以提供更好的自我文档。

def update_status_request(request, id):
    if request.method == 'PATCH':
        customer = Customer.objects.get(pk=id)
        customer.status = request.data.get('new_status')
        customer.save()
        return JsonResponse({'message': 'Status has been updated'}, status=200)

您可能还想做一些额外的验证并尝试...除了。


推荐阅读