我有一个简单的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)
答案 0 :(得分:0)
您不需要@detail_route
装饰器。 DRF知道.partial_update
方法适用于PATCH
。