python Django self.groups.add(group)没有添加组

sh7euo9m  于 2022-12-25  发布在  Python
关注(0)|答案(1)|浏览(104)

我有一个带有role字段的用户模型。我希望每个用户都在一个与他们的role相对应的Group中。
所以我尝试在每次保存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)

我怎样才能让它工作呢?

9lowa7mx

9lowa7mx1#

您遇到的问题是您将组添加到用户,而不是以相反的方式(将用户添加到组)。
@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

相关问题