Как правильно назначить права доступа пользователю при сохранении модели?
Я хочу назначить права пользователю, когда я меняю группу в админке Django.
Я добавляю это разрешение внутри пользовательской модели User в методе save
.
Когда я сохраняю изменения в панели администратора, никаких ошибок не возникает, но разрешения не создаются в моей локальной БД
Вот как выглядит моя модель
class UserProfile(AbstractUser, PermissionsMixin):
name = models.CharField(max_length=255, unique=False, default=None)
email = models.EmailField(max_length=50, unique=True)
email_verified = models.BooleanField(default=False)
date_joined = models.DateTimeField(default=timezone.now)
password = models.CharField(max_length=100, null=False)
USERNAME_FIELD = "email"
REQUIRED_FIELDS = ["name"]
objects = CustomAccountManager()
def is_member(self, group_name: Roles):
return self.groups.filter(name=group_name.value).exists()
def save(self, *args, **kwargs):
if self.is_member(Roles.STAFF):
permissions = Permission.objects.filter(codename__in=settings.STAFF_PERMISSIONS)
self.user_permissions.add(*permissions)
logger.info(f"Permissions {list(permissions)} added for user {self.email}")
super().save(*args, **kwargs)
По какой-то причине я могу добавить разрешения из CLI при создании экземпляра User, но не в методе save
, что здесь может быть не так?