Django self.groups.add(group) не добавляет группу

У меня есть модель User с полем role. Я хочу, чтобы каждый пользователь был в одном Group, который соответствует его role.

Поэтому я пытаюсь установить их группу каждый раз, когда user сохраняется. Проблема в том, что пользователь не входит ни в одну группу после сохранения.

Важная часть модели пользователя

...
role = models.CharField('Rola', max_length=32, choices=RoleChoices.choices, null=True, blank=True
                        )

def save(self, *args, **kwargs):
    self._set_role_stuff()
    super().save()
    self._set_group()
    pass

def _set_role_stuff(self):
    if self.role and not self.role == RoleChoices.CLIENT:
        self.is_staff = True
    else:
        self.is_staff = False

def _set_group(self):
    self.groups.clear()

    group = Group.objects.get(name='Fotograf')
    self.groups.add(group)

Как я могу заставить его работать?

Проблема заключается в том, что вы добавляете группу к пользователю, вместо того, чтобы сделать это наоборот (добавить пользователя к группе).

Это было решено @juankysmith следующим образом:

from django.contrib.auth.models import Group
group = Group.objects.get(name='Fotograf') 
group.user_set.add(self.user)

смотрите оригинальный ответ здесь:

https://stackoverflow.com/a/6288863/6417220

Вернуться на верх