通过Django Rest Fram更新对象

2024-04-29 15:11:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经建立了一个Django Rest框架,可以正确地服务于GET请求。在这里询问了前面的问题之后,它还应该能够正确地更新对象。但是,我不确定如何才能只更新模型对象中的一个字段。我有一个这样的模型视图集:

class TaskViewSet(viewsets.ModelViewSet):
    queryset = Task.objects.filter(done = False).order_by('-unixTime')
    serializer_class = TaskSerializer
    paginate_by = None

我通过这样的路由器注册网址:

^{pr2}$

序列化程序与现在一样基本:

class TaskSerializer(serializers.ModelSerializer):

    class Meta:
        model = Task
        fields = ('id', 'user', 'task', 'unixTime', 'done')

我希望能够更新由主键id标识的任务对象的“完成”字段。我想我需要使用部分更新模型或路径,但我不确定如何实现这一点。另外,为了提供更多信息,DRF浏览器视图显示允许的HTTP方法是GET, POST, HEAD, OPTIONS。在


Tags: 对象django模型框架restidtaskget
1条回答
网友
1楼 · 发布于 2024-04-29 15:11:09

如果使用的是ModelViewSet,只需将put添加到url的as_view()参数中。在

您的url中应该有这样的内容:

TaskViewSet.asView({'get': 'retrieve', 'put': 'update'})

即:

^{pr2}$

然后可以使用requests.put来更新它。在

如果要重写update方法,可以将以下内容添加到视图集中:

def update(self, request, *args, **kwargs):
    # Perform your custom actions here and probably call:
    super(TechyRetrieveUpdate, self).update(request, *args, **kwargs)

相关问题 更多 >