我有 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)
and NotesDetail(generics.RetrieveUpdateDestroyAPIView)
。现在,如果用户要访问,则无法查看其他人的笔记/notes/<pk>/
, 但在/notes/
无论如何,他可以查看完整列表。
那么,我该如何改变它呢?我想在笔记中仅查看我的笔记。
我认为正确的方法是过滤queryset = Snippet.objects.all().filter(owner=...)
但无法立即思考。
你是对的,你需要覆盖列表视图中的查询集。但你不能在queryset
属性本身,因为它是在进程启动时执行的,而您需要访问仅在请求时可用的数据。所以你需要定义get_queryset
该视图中的方法:
def get_queryset(self, *args, **kwargs):
return Snippet.objects.all().filter(owner=self.request.user)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)