【发布时间】:2016-09-04 06:01:30
【问题描述】:
我是相当新的 django rest 框架,我对权限有一些疑问。
所以我有一个用户是组织成员和某个组的成员。 假设我们有一个模型:
class SomeModel:
organization = models.ForeignKey(Organization)
name = models.CharField()
用户只能为自己的组织create/updateSomeModel,如果他是一组“协调员”,他也可以为任何组织create/update。
目前我的方法是在序列化程序中检查这些条件,在.create() 和.update() 方法中,因为数据已经过验证并且我在那里提出PermissionDenied 错误。但感觉这不是“正确的方式”。我尝试制作自定义权限类,但未验证数据,因为在序列化程序之前检查权限类。
你有什么建议我应该如何处理这个问题?
抱歉英语不好,这不是我的母语。 谢谢!
编辑: 例子: 请求数据类似于:
payload = {'organization': 1, 'name': 'Name'}
因此,如果用户来自组织 1 或者他是协调员,则应授予访问权限并应创建 SomeModel
【问题讨论】:
-
在使用自定义权限类时,如果用户没有创建/更新权限,为什么还要进一步验证数据?
-
我需要检查正在创建的模型中的组织是否存在。
-
我添加了一个例子,这可能有助于理解我的问题...
标签: python django django-rest-framework django-permissions django-serializer