我的理解是基于泛型类的视图最终依赖于相应pk
指定的urls.py
变量来执行数据库查找。在urls.py
中我指定了pk
,然后在基于类的视图中我只提供了queryset和serializer类。
有没有办法保持通用视图的近干,但只覆盖 类如何从pk
转到对象或查询集?我知道我可以从APIView继承并自己提供get
,post
等方法,但那时代码要多得多。我想继续使用泛型的内置功能,但只提供从url参数到对象或查询集的机制。
我试图允许通过它们的普通性而不是它们的pk在URL中指定对象。因此,/foo/1
映射到Foo.objects.all()[0]
。
答案 0 :(得分:2)
我认为解决方案是覆盖get_object
- 我还没有意识到我可以访问视图类本身下的url参数:
class Foo(generics.RetrieveDestroyAPIView):
serializer_class = FooSerializer
def get_object(self):
return Foo.objects.all()[self.kwargs['foo_if_in_url'] - 1]