覆盖基于泛型的类如何从URL参数中查找对象

时间:2016-02-08 23:50:18

标签: python django django-views django-rest-framework

我的理解是基于泛型类的视图最终依赖于相应pk指定的urls.py变量来执行数据库查找。在urls.py中我指定了pk,然后在基于类的视图中我只提供了queryset和serializer类。

有没有办法保持通用视图的近干,但只覆盖 类如何从pk转到对象或查询集?我知道我可以从APIView继承并自己提供getpost等方法,但那时代码要多得多。我想继续使用泛型的内置功能,但只提供从url参数到对象或查询集的机制。

我试图允许通过它们的普通性而不是它们的pk在URL中指定对象。因此,/foo/1映射到Foo.objects.all()[0]

1 个答案:

答案 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]