我有2个视图:/ notes /和/ notes //在models.py我有拥有者变量的笔记模型中,它存储了所有者的登录信息.因为我想拥有很多用户,所以我不希望他们看到其他人的笔记,所以我创建了权限:
class IsOwner(permissions.BasePermission):
def has_object_permission(self, request, view, obj):
return obj.owner == request.user
Run Code Online (Sandbox Code Playgroud)
我将此权限设置为NotesList(generics.ListCreateAPIView)和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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1647 次 |
| 最近记录: |