django rest框架,如何限制用户可以看到的数据列表?

django rest框架,如何限制用户可以看到的数据列表?,django,django-rest-framework,Django,Django Rest Framework,假设你想展示一下 所有博客的列表 用户创建的博客列表 如何在django rest框架中实现它们 我要创建两个视图集吗 我是不是也要做两个get_queryset()呢 还是两个权限类 编辑: 您想在最近的选项卡中显示所有博客。 您想在用户的个人资料页面中显示其博客。 您想在热门选项卡中显示热门博客 可能还有更多的博客列表…您似乎只想根据一些给定的参数筛选查询集。您应该看看django过滤器和DRF过滤选项。它们可能是你真正需要的 …/blogs/?owner=1 这将为您提供所有“所有

假设你想展示一下

  • 所有博客的列表
  • 用户创建的博客列表
如何在django rest框架中实现它们

我要创建两个视图集吗

我是不是也要做两个get_queryset()呢

还是两个权限类

  • 编辑:
您想在
最近的
选项卡中显示所有博客。
您想在用户的
个人资料
页面中显示其博客。
您想在
热门
选项卡中显示热门博客


可能还有更多的博客列表…

您似乎只想根据一些给定的参数筛选查询集。您应该看看django过滤器和DRF过滤选项。它们可能是你真正需要的

…/blogs/?owner=1

这将为您提供所有“所有者”字段等于id=1的用户的博客

另一个选项是在视图集中使用@list\u路由装饰器,如下所示:

@list_route
def popular(self, request)
   .... # Do stuff
   return Response(data, status=status.HTTP_200_OK)
这会将博客路由添加到您的视图集中,并返回您告诉它返回的任何内容。
因此,转到“../blogs/popular/”将返回“data”

您应该有两个视图集。其他选项不符合逻辑。这取决于显示其中一个选项的要求。也许某些用例会很好?@ArunGhosh:two viewset表示模型列表的两个url端点?@timop:添加了这些用例。@eugene的另一个选项是将参数传递给单个端点覆盖get_queryset()“popular”到底是什么意思?它是一个字段的值还是根据一些参数或其他东西计算的值?我想../popular\u blogs/可能比../blogs/?mode=popular稍微改变了我的答案。不确定哪一个更适合你