I am trying to create a group for each new user using signals.py
Signals.py is looking like that :
@receiver(post_save, sender=User)
def create_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
Profile.objects.create(group=)
and my 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)
How do I set a default group with a the name of the user ? Something lile "Groupe of [user]" ?
You can first construct (or retrieve) a group with as name the name of the user, and then set that group in the profile you create:
@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)
You however might want to use .create(..)
over get_or_create(..)
to prevent users from registering as 'admin'
for example, to get automatically registered in a (possibly) already existing group Group of admin
.