В моих Джанго - приложение разрешений настройки я для различных facilities
со следующими группами:Джанго - реляционная ограничение (ограничение по группам пользователей)
ADMIN_<facility>
USER_<facility>
Где администратор имеет все права, которые пользователь имеет и некоторые другие.
Я хотел бы ограничить, чтобы пользователь, имеющий группу 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>
группы?