2
对象级别的权限
来自实例http://www.django-rest-framework.org/tutorial/4-authentication-and-permissions/#object-level-permissionsDjango的:对象级权限DRY
class IsOwnerOrReadOnly(permissions.BasePermission):
"""
Custom permission to only allow owners of an object to edit it.
"""
def has_object_permission(self, request, view, obj):
# Read permissions are allowed to any request,
# so we'll always allow GET, HEAD or OPTIONS requests.
if request.method in permissions.SAFE_METHODS:
return True
# Write permissions are only allowed to the owner of the snippet.
return obj.owner == request.user
我的需求:所有的查询集对象的用户可以编辑
我想有一个Django的ORM查询集其中包含给定用户可以编辑的所有对象。
我想我可能会创建一个复杂的Django的ORM过滤器(使用OR和不同的)解决了这个
不会干
但是,这不干燥。这不是DRY,因为我需要两次编码。有一次在has_object_permission()
中,有一次在django-orm过滤器中。
问题
如何解决我的需要(所有的查询集对象的用户可以编辑)不重复的权限检查?
虽然这不是我正在寻找的答案:谢谢你考虑这个问题。 – guettli
是的,这也是令我困扰的事情,这不适合Django REST框架。我期待着看看有没有人有另一种选择。 – Linovia