覆盖partial_update(PATCH DJANGO)

时间:2016-05-06 21:59:09

标签: django django-rest-framework patch

我有一个简单的PATCH方法,我向对象Foo发送了一堆参数,包括参数new_bar。我想首先修补所有其他字段,然后将new_bar附加到当前的obejcts bar数据。

我遇到的问题是Django拒绝接受我对部分路由的覆盖(错误:

response = handler(request, *args, **kwargs) TypeError: decorator() takes exactly 1 argument (3 given))

如何覆盖我的PATCH方法以在我的对象食物上接受此参数bar并附加它。我将新数据作为键new_bar发送,以免混淆Django并陷入初始补丁步骤:

   @detail_route
   def partial_update(self, request, *args, **kwargs):
    serializer = FooSerializer(data=request.data, partial=True)
    serializer.is_valid()        
    instance = serializer.save()

    bar = self.request.POST.get('new_bar', None)
    if bar:
        if len(instance.bar) == 0:
            instance.bar = bar
        else:
            # Append
            bar = json.loads(bar)
            old_bar = json.loads(instance.bar)
            instance.bar = json.dumps(oldbar)

1 个答案:

答案 0 :(得分:0)

您不需要@detail_route装饰器。 DRF知道.partial_update方法适用于PATCH