我想使用http://xxxxxx/ {id}和http://xxxxxx/ {md5}
我觉得它像这样工作
class ItemViewSEt(viewsets.ModelVieSet):
queryset = item.objects.all()
serializer_class = ItemSerializer
permission_classes = [AllowAny]
lookup_field = 'id'
@detail_route(methods=['GET'], permission_classes=[AllowAny])
def test(self, request):
self.lookup_field = 'md5'
但它不适用于以下错误
check()得到了一个意外的关键字参数'pk'
我该如何解决这个问题?
我是否分开观看?或制作方法视图并包含网址?
答案 0 :(得分:2)
不要认为在方法中更改lookup_field
会起作用。
但是,您可以使用md5进行查询并从方法返回响应。
默认情况下,detail_route
添加pk
作为您可以重复使用的参数。
所以示例代码是
@detail_route(methods=['GET'], permission_classes=[AllowAny])
def test(self, request, pk=None):
obj = Item.objects.get(md5=pk)
ser = ItemSerializer(obj)
return Response(ser.data)