Python 通过Django Rest框架更新对象

Python 通过Django Rest框架更新对象,python,django,django-models,django-rest-framework,Python,Django,Django Models,Django Rest Framework,我已经建立了一个Django Rest框架,可以正确地服务GET请求。在这里问了前面的问题之后,它还应该能够正确地更新对象。但是,我不确定如何只更新模型对象中的一个字段。我有这样一个模型视图集: class TaskViewSet(viewsets.ModelViewSet): queryset = Task.objects.filter(done = False).order_by('-unixTime') serializer_class = TaskSerializer

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

class TaskViewSet(viewsets.ModelViewSet):
    queryset = Task.objects.filter(done = False).order_by('-unixTime')
    serializer_class = TaskSerializer
    paginate_by = None
router = routers.DefaultRouter()
router.register(task', views.TaskViewSet)
urlpatterns = [
    url(r'^', include(router.urls)),
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]
我通过如下路由器注册了URL:

class TaskViewSet(viewsets.ModelViewSet):
    queryset = Task.objects.filter(done = False).order_by('-unixTime')
    serializer_class = TaskSerializer
    paginate_by = None
router = routers.DefaultRouter()
router.register(task', views.TaskViewSet)
urlpatterns = [
    url(r'^', include(router.urls)),
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]
序列化程序的基本功能与它们现在的功能一样:

class TaskSerializer(serializers.ModelSerializer):

    class Meta:
        model = Task
        fields = ('id', 'user', 'task', 'unixTime', 'done')
我希望能够更新由主键id标识的任务对象的“完成”字段。我想我需要使用部分更新模型或路径,但我不确定如何实现。另外,为了提供更多信息,DRF浏览器视图显示允许的HTTP方法有GET、POST、HEAD和OPTIONS。

如果您使用的是ModelViewSet,只需将put添加到url的as_视图参数中即可

您的url中应该有如下内容:

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

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

如果要覆盖更新方法,可以将以下内容添加到视图集中:

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