django - Django:创建将两个“用户”对象关联在一起的权限
问题描述
有没有办法建立一个权限系统,其中权限将User
对象关联在一起,即一个人User
可能有权读取另一个User
人的信息(但不一定相反)?我已经阅读了文档,但它很稀疏,据我所知,权限无法处理动态用例。
基本上,我想要一个权限系统来确定两个以上模型对象可以对彼此“做什么”。
如果您对如何将其集成到 Django Rest Framework 有任何意见,则可以加分。
解决方案
一种方法是覆盖 BasePermission 类来创建您的自定义权限。您可以使用 User 模型中的额外字段指定访问权限。
class UserPermission(BasePermission):
def has_permission(self, request, view):
is_allowed_user = False
try:
permission = Permission.objects.get(user=request.user.id, user1=request.GET.get('user'))
if permission.is_read_enabled:
is_allowed_user = True
else
is_allowed_user = False
except Permission.DoesNotExist as e:
is_allowed_user = False
return is_allowed_user
创建模型以指定权限
class Permission(models.Model):
user = models.ForeignKey(User,...)
user1 = models.ForeignKey(User,...)
is_read_enabled = models.BooleanField(defualt=False)
根据需要添加此权限以查看。
推荐阅读
- json - 如何确认在 Coldfusion 中接收到 Webhook POST
- sql - 致命错误:未捕获错误:调用未定义函数 mysql_query() 布局不正确
- android - Kotlin - 未调用 google 的 Place Autocomplete API onClick 的清除按钮侦听器
- mysql - 未传递对象值
- c# - 为所有用户运行一次服务器功能
- r - 当变量的级别不同时在 R 中处理测试/训练数据
- excel - Excel 2016 中的 OData 提要/Power Query 未检索全部/复制某些记录
- r - 基于第二个df(R)的两个属性对数据框进行子集化
- java - Maven 警告我关于“基于文件名的自动模块”,即使我已经定义了稳定名称
- mysql - 如何在 MySQL 中存储和获取封装的数组数据