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)
Вернуться на верх