如何在Django中管理俱乐部/团队(组)的成员资格和处理权限?

如何在Django中管理俱乐部/团队(组)的成员资格和处理权限?,django,django-models,Django,Django Models,我正在创建一个Django项目,帮助人们管理俱乐部和社区团体。我是Django的新手,我可以想出很多不同的方法来向俱乐部添加用户和管理权限,但不清楚正确的方法是什么 我有一个俱乐部模式和一个团队模式。一个俱乐部可以有多个团队,俱乐部成员可能是团队成员,也可能不是团队成员,但用户必须是俱乐部成员才能加入团队。对于俱乐部/团队成员可以做什么、不能做什么以及俱乐部/团队管理员可以做什么,也会有各种权限 我目前管理成员资格的计划是创建ClubMembership和TeamMembership模型,并使用

我正在创建一个Django项目,帮助人们管理俱乐部和社区团体。我是Django的新手,我可以想出很多不同的方法来向俱乐部添加用户和管理权限,但不清楚正确的方法是什么

我有一个俱乐部模式和一个团队模式。一个俱乐部可以有多个团队,俱乐部成员可能是团队成员,也可能不是团队成员,但用户必须是俱乐部成员才能加入团队。对于俱乐部/团队成员可以做什么、不能做什么以及俱乐部/团队管理员可以做什么,也会有各种权限

我目前管理成员资格的计划是创建ClubMembership和TeamMembership模型,并使用ManyToManyField.to创建关系,如下所示:

对于权限,我似乎应该使用django guardian,并在人们加入/离开俱乐部/团队时设置权限。在我的俱乐部/团队模型中也有一个指向django.contrib.auth.models.Group的成员外键来跟踪这一点有意义吗

我感觉自己在某些领域加倍努力,通过成员模型管理成员资格,然后使用组设置权限。有没有更好的方法来解决这个问题,或者我应该修改/考虑什么

类Teammodels。模型: 领域 名称=型号。CharFieldmax_长度=255 关系字段 club=models.ForeignKey “组织.俱乐部”, 在_delete=models.CASCADE上,相关的_name=teams, members=models.ManyToManyField “组织.用户.用户”, 相关团队名称=团队,通过class='TeamMembership',通过字段class='team',用户' administrators=models.OneToOneField 组 在_delete=models.CASCADE上,相关的_name=teams, 类TeamMembershipmodels。模型: 领域 名称=型号。CharFieldmax_长度=255 关系字段 team=models.ForeignKey “组织.团队”, 在_delete=models.CASCADE上,相关的_name=teammemberships, user=models.ForeignKey “users.User”, 在_delete=models.CASCADE上,相关的_name=teammemberships, 总结我的问题:

TeamMembership模型是将用户与 团队? 我是否应该在模型中包含组以容纳用户 权限用途,还是会导致问题? 还有另一种方法我应该考虑吗?
欢迎来到StackOverflow

1团队成员资格看起来是一个很好的方式。我不确定名称字段将用于什么,但它看起来可能是团队名称或用户名中的冗余字段

2实现权限组不是一个坏主意。这样,应用程序的安全部分就不依赖于功能部分,反之亦然


3在组中实现django Guarders权限的最佳方法是使用在创建或销毁团队或团队成员实例时发送的信号。团队的创建/删除将导致相应权限组的创建/删除,团队成员的创建/删除将导致团队权限组中该人员的添加/删除。

非常感谢您的回答!我认为name字段是我忘记从上一次迭代中删除的内容。我制作了一系列不同的东西的原型,并或多或少地在我开始的地方结束了。使用信号是一个好主意,我已经涉猎了一些,所以希望我能找到答案。再次感谢!