Django REST框架:阻止访问您不拥有的对象

时间:2014-06-26 13:25:15

标签: django django-rest-framework

我有ModelViewSetModelSerializer Fooget_queryset中的ViewSet方法会过滤用户的结果(即,用户只能在Foo GET时看到他们拥有的foo/个对象。我试图了解DRF如何阻止用户访问您不希望他们访问的对象或通过其ID修改特定对象(如foo/123/中所示)。

foo/123/案例中,我注意到get_queryset也会调用GET。那么在检索单个对象之前,get_queryset首先剔除了结果吗?我没有假设,而是为我的api中的每个单个对象定义了自定义权限和覆盖has_object_permission,假设这是防止用户无权访问和操纵对象的方法。但我可以依靠get_queryset中的过滤来确保这一点吗?

1 个答案:

答案 0 :(得分:2)

Tl; DR:是的。

get_object会在get_object_or_404返回的QuerySet上调用get_queryset - 所以你很好。