我有ModelViewSet
和ModelSerializer
Foo
。 get_queryset
中的ViewSet
方法会过滤用户的结果(即,用户只能在Foo
GET
时看到他们拥有的foo/
个对象。我试图了解DRF如何阻止用户访问您不希望他们访问的对象或通过其ID修改特定对象(如foo/123/
中所示)。
在foo/123/
案例中,我注意到get_queryset
也会调用GET
。那么在检索单个对象之前,get_queryset
首先剔除了结果吗?我没有假设,而是为我的api中的每个单个对象定义了自定义权限和覆盖has_object_permission
,假设这是防止用户无权访问和操纵对象的方法。但我可以依靠get_queryset
中的过滤来确保这一点吗?
答案 0 :(得分:2)
Tl; DR:是的。
get_object
会在get_object_or_404
返回的QuerySet上调用get_queryset
- 所以你很好。