使用信号创建用户名组

Using signal to create group with username

我正在尝试使用 signals.py

为每个新用户创建一个组

Signals.py 看起来像这样:

@receiver(post_save, sender=User)
def create_profile(sender, instance, created, **kwargs):
if created:
    Profile.objects.create(user=instance)
    Profile.objects.create(group=)

和我的models.py

class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
group = models.OneToOneField(Group, null=True, blank=True, on_delete=models.CASCADE)
manager = models.BooleanField(default=False)
first_visit = models.BooleanField(default=True)

如何使用用户名设置默认组?有点儿 "Groupe of [user]" ?

您可以先构建(或检索)一个以用户名作为名称的组,然后在您创建的配置文件中设置该组:

@receiver(post_save, sender=User)
def create_profile(sender, instance, created, **kwargs):
if created:
    <b>group</b>, __ = Group.objects.get_or_create(name='Group of {}'.format(instance.username))
    Profile.objects.create(user=instance, group=<b>group</b>)
    instance.<b>groups.add(group)</b>

然而,您可能希望使用 .create(..) 而不是 get_or_create(..) 来防止用户注册为 'admin',例如,自动注册到(可能)已经存在的组 Group of admin.