您好我正在使用Django来构建项目管理应用程序,因为我有100个用户& 50多个项目。 单个用户参与多个具有不同角色的项目。现在如何给出基于项目角色的权限??
例如。 让用户"阿诺德"正在研究" [项目-A作为经理,项目-B作为供应商,项目-C作为艺术家]", *作为经理,阿诺德将获得项目A的所有权限, *作为供应商,arnold将获得项目B中的只读权限, *作为艺术家,arnold将获得项目C中的读取,写入和更新权限,
现在告诉我如何设计如上所述的模型关系?
答案 0 :(得分:1)
这是我如何接近它。
从django的标准用户对象开始(我总是将其用于我的用户,然后从那里抽象出来)。
然后我创建一个角色对象。角色的名称包括供应商,所有者,艺术家等。
然后我在User,Role和Project之间创建一个联结对象。
class Role(...):
name = models.CharField(...)
class Project(...):
...
class ProjectParticipant(...):
user = models.ForeignKey(User)
role = models.ForeignKey(Role)
project = models.ForeignKey(Project)
然后我可以在视图中创建自定义@user_passes_test权限规则,以检查用户是否与项目有适当的关系。我假设您有一个暴露项目的视图,然后在其中公开不同的ProjectParticipant角色。