Django : Автоматическое добавление пользователя в группу с помощью сигналов
В настоящее время я пытаюсь автоматически добавить пользователей в определенную группу с помощью сигналов. Это работает, когда я редактирую поля пользователя, но не работает, когда я добавляю к нему группу.
@receiver(pre_save, sender=User)
def addToPiloteGroup(sender, instance, *args, **kwargs):
group = Group.objects.get(name='Pro')
instance.groups.add(group) # => doesn't work
instance.last_name = 'some name' # => works
print('user has been group : ' + group.name)
Я бился несколько часов и наконец нашел решение благодаря этому посту
def on_transaction_commit(func):
def inner(*args, **kwargs):
transaction.on_commit(lambda: func(*args, **kwargs))
return inner
@receiver(pre_save, sender=User)
@on_transaction_commit
def addToPiloteGroup(sender, instance, *args, **kwargs):
group = Group.objects.get(name='Pro')
instance.last_name = 'some name' # => works now :) !
print('user has been group : ' + group.name)