【发布时间】:2019-07-05 17:41:01
【问题描述】:
我正在开发一个 Django 1.5 项目。
应用程序包含的用户层次结构
Owner
Admin
Viewer
- 所有者拥有数据库中的所有数据。
- 管理员用户由所有者创建并具有不同的登录凭据。可以在 Owner 下添加/编辑/删除数据。
- 查看者用户由所有者创建并具有不同的登录凭据。可以查看 Owner 下创建的数据。
Users 模型有一个字段 is_shared(布尔值)来识别主要用户和共享用户,access_level 映射到另一个模型 MultiUser。
我已经想过以这种方式实现它
- 更新所有视图集并签入
get_queryset。 - 如果用户有
is_shared=True,将在哪里进行第一次检查 - 然后签入MultiUser模型,
- 从MultiUser获取
user,然后代表用户过滤记录。
但这需要对整个应用程序视图集进行更改。
有没有办法在不更改整个应用程序的情况下做到这一点。
可能是middleware。
编辑 2:多用户模型
class MultiUser(models.Model):
user = models.ForeignKey(User, related_name='owner_user')
shared_user = models.ForeignKey(User, related_name='shared_user')
access_level = models.CharField(max_length=50)
【问题讨论】:
-
如果您还提供视图集和 MultUser 模型的代码,将会很有帮助。
-
我也很困惑。
viewsets是 django-rest-framework 的一部分,而不是 django。纠正我吗? -
viewsets是DRF的一部分 -
添加了
MultiUser模型。视图集不具体,已经有很多视图集了。
标签: django django-1.5