使用信号创建带有用户名的群组

问题描述 投票:1回答:1

[我正在尝试使用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)

我如何用用户名设置默认组?有点“ [用户]组”吗?

python django-models django-signals
1个回答
1
投票

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

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

但是,您可能想在.create(..)上使用get_or_create(..),以防止用户注册为'admin',以自动在(可能是)现有组Group of admin中注册。

© www.soinside.com 2019 - 2024. All rights reserved.