【问题标题】:Overriding how a generic class based looks up an object from the URL arguments覆盖基于泛型类从 URL 参数中查找对象的方式
【发布时间】:2016-02-08 23:50:18
【问题描述】:

我的理解是,基于通用类的视图最终依赖于相应的urls.py 指定的pk 变量来执行数据库查找。在urls.py 中我指定pk,然后在基于类的视图中我只提供查询集和序列化器类。

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

我试图允许在 url 中通过它们的序数而不是它们的 pk 来指定对象。所以,/foo/1 映射到 Foo.objects.all()[0]

【问题讨论】:

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


    【解决方案1】:

    我认为解决方案是覆盖 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]
    

    【讨论】:

      猜你喜欢
      • 2020-03-14
      • 1970-01-01
      • 2012-03-01
      • 1970-01-01
      • 2020-07-16
      • 2019-08-12
      • 2013-08-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多