如何设置lookup_field?

时间:2017-05-29 12:20:08

标签: django django-rest-framework

AssertionError:使用名为" pk"的URL关键字参数调用的预期视图blabla。修复您的网址,或者在视图上正确设置.lookup_field属性。

#如果您想使用pk以外的对象查找,请设置' lookup_field'

我不想使用URL来设置pk,我想使用来自query_params的pk,例如:

request.query_params.get('id', None)

那么如何设置lookup_field?

解决 我们可以覆盖pk值的更新方法

class blabla(generics.CreateAPIView,
            generics.ListAPIView,
            generics.RetrieveAPIView,
            generics.UpdateAPIView):

   def update(self, request, pk = None):
        log.debug("update pk= %s , data = %s" % (pk, str(request.data)))
        pk = request.data.get('id')
        self.kwargs['pk'] = request.data.get('id')
        return super().update(request, pk)

1 个答案:

答案 0 :(得分:0)

您的代码不起作用,因为您在类级别引用request对象,并且它不存在:它是在实例级别创建的。但你完全不需要它,只需: lookup_field = 'id'