Я хочу добавить пользователя в группу после сохранения объекта пользователя. У каждого пользователя есть permission level
, соответствующий группе, к которой он принадлежит. Например, если permission level
равно 3
, то пользователь принадлежит Group_3
и так далее.
Это мой код:
models.py
class User(AbstractUser):
...
ID = models.IntegerField(default=random_integer, unique=True)
permissions = models.IntegerField(default=0)
...
def __str__(self):
return self.first_name
def add_2_group(sender, instance, **kwargs):
if kwargs['created']:
if instance.permissions == 3:
group = Group.objects.get(name='Group_3')
group.user_set.add(instance)
post_save.connect(add_2_group, sender=User)
Как видите, я использую сигнал post_save
для добавления пользователя в группу после сохранение пользовательского экземпляра. Однако это не работает. Судя по всему, после сохранения пользователя ничего не происходит. Как мне решить эту проблему?
EDIT:
Я понял, в чем проблема: по умолчанию permission level
установлено на 0
, и я проверял только permission level
из 3
. Однако теперь я столкнулся с другой странной проблемой. Это изменение, которое я внес в код:
def add_2_group(sender, instance, **kwargs):
if kwargs['created']:
if instance.permissions == 0:
group = Group.objects.get(name='Group_0')
instance.groups.add(group)
else:
if instance.permissions == 3:
group = Group.objects.get(name='Group_3')
instance.groups.add(group)
В основном, когда я сохраняю модель пользователя с permission level
из 3
, группа не обновляется. Таким образом, пользователь всегда остается на Group_0
и не становится частью Group_3
. Похоже, что instance.groups.add(group)
не работает при сохранении пользователя; он работает только при его создании. Почему это происходит и как это исправить?