【问题标题】:Row level permission for admin page using django rest framework使用 django rest 框架的管理页面的行级权限
【发布时间】:2020-02-13 22:38:34
【问题描述】:
在我的项目中,我有几家商店,每家商店都有一个特定的所有者。
我想将这些商店分配给特定的所有者。任何其他人都不应有权更新与该商店对应的数据。所有所有者都将拥有访问该特定数据集的管理员权限。
【问题讨论】:
标签:
django
django-models
django-rest-framework
【解决方案1】:
涉及两个部分:
- 过滤
- 许可
对于过滤,您必须为每个 Viewset/APIView 覆盖 get_queryset。例如,
def get_queryset(self):
# you can do anything here
qs = super().get_queryset()
return qs.filter(owner=self.user)
要获得许可,这取决于您将如何做到这一点。最安全的选择是实现restframework.permissions,您甚至可以在对象级别进行。然后你可以在settings.py中设置喜欢
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': [
'core.permissions.IsStoreOwnerOrNoModification',
]
}