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)
смотрите оригинальный ответ здесь: