在我的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>
組?