在我的Django - 应用程序,我设置的权限不同facilities
有以下几组:Django的 - 关系约束(用户团体的约束)
ADMIN_<facility>
USER_<facility>
其中Admin拥有所有该用户拥有多一些的权利。
我想约束一个拥有组ADMIN_facility1
的用户永远不会被添加到组USER_facility1
。我的方法:
class MyUser(models.Model):
...
@property
def admin_facilities(self):
[g.name for g in self.groups.filter(name__startswith="ADMIN_")]
@property
def user_facilities(self):
[g.name for g in self.groups.filter(name__startswith="USER_")]
def save(self, **kwargs):
for user_fac in self.user_facilities:
if user_fac in self.admin_facilities:
# remove the user facility
self.groups.remove(
self.groups.get(name="USER_{}".format(user_fac)
)
super(MyUser, self).save(**kwargs)
...
此方法不起作用,因为在调用保存功能期间组尚未存在。
问题:我该如何限制一个ADMIN_<facility>
组中的用户永远不能被添加到相应的USER_<facility>
组?