Я прочитал в документации Django, что при добавлении пользователя в группу он автоматически получит разрешения, предоставленные этой группе. Итак, в моем приложении я создал группу под названием «admin» через интерфейс администратора, и я дал разрешение, которое мне было нужно. Теперь, если я создаю нового пользователя и добавлю его к «владельцам» группы, у него нет разрешений группы.Назначение разрешений группы пользователю в django
Тогда я попытался экспериментировать это в Джанго оболочки и он побежал хорошо права доступа группы действительно присвоенного user_permissions
Это мой код в Джанго модели пользователя
class UserAccount(AbstractUser):
def __str__(self): # __unicode__ for Python 2
return str(self.username)
def __unicode__(self):
return str(self.username)
def save(self, *args, **kwargs):
super(UserAccount, self).save(*args, **kwargs)
for group in set(self.groups.all()):
self.user_permissions = group.permissions.all()
Другой Попробуйте
class UserAccount(AbstractUser):
def __str__(self): # __unicode__ for Python 2
return str(self.username)
def __unicode__(self):
return str(self.username)
def save(self, *args, **kwargs):
super(UserAccount, self).save(*args, **kwargs)
for group in set(self.groups.all()):
for perm in group.permissions.all():
self.user_permissions.add(perm)
Оба не работают, когда я сохраняю пользователя с интерфейса панели администратора, но оба хорошо работают на оболочке django. Я попытался отладки ipdb
и код выполняется, но разрешения не назначены
Затем я пытаюсь добавить разрешения в обратном пути из группы
from django.contrib.auth.models import Group as BaseGroup
class Group(BaseGroup):
class Meta:
proxy = True
def save(self):
super(Group, self).save()
for user in self.user_set.all():
user.user_permissions = self.permissions.all()
Я не знаю, что я сделал правильно или нет, и если это правильно почему бы не работать должным образом.
Update:
Нет необходимости назначать права доступа, как пользователь имеет права доступа группы автоматически
Я уже даю группе пользователю и группе разрешения –
Спасибо, так как у пользователя есть разрешения группы. Я проверил его метод 'has_perm' –