使用信号创建用户名组
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
.
我正在尝试使用 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
.