【问题标题】:View list of only current user objects, Django REST查看仅当前用户对象的列表,Django REST
【发布时间】:2017-04-19 13:09:10
【问题描述】:

我有 2 个视图:/notes/ 和 /notes// 在models.py 的笔记模型中,我有所有者变量,用于存储所有者的登录信息。 因为我想有很多用户,我不想让他们看到别人的笔记,所以我创建了权限:

class IsOwner(permissions.BasePermission):
    def has_object_permission(self, request, view, obj):
        return obj.owner == request.user

我将此权限设置为NotesList(generics.ListCreateAPIView)NotesDetail(generics.RetrieveUpdateDestroyAPIView)。现在用户如果去/notes/<pk>/ 就不能查看其他人的笔记,但是在/notes/ 他仍然可以查看完整列表。 那么,我该如何改变呢?我只想在笔记列表中看到我的笔记。 我认为正确的方法是过滤queryset = Snippet.objects.all().filter(owner=...),但不能马上思考。

【问题讨论】:

    标签: python django


    【解决方案1】:

    你是对的,你需要覆盖列表视图中的查询集。但是您不能在 queryset 属性本身中执行此操作,因为这是在进程启动时执行的,而您需要访问仅在请求时可用的数据。所以你需要在那个视图中定义get_queryset方法:

    def get_queryset(self, *args, **kwargs):
         return Snippet.objects.all().filter(owner=self.request.user)
    

    【讨论】:

      猜你喜欢
      • 2020-04-11
      • 1970-01-01
      • 2015-06-25
      • 2013-03-24
      • 2017-07-12
      • 2016-07-14
      • 1970-01-01
      • 2018-06-17
      • 2020-04-22
      相关资源
      最近更新 更多