Adding user to group on creation in Django

后端 未结 2 1520
被撕碎了的回忆
被撕碎了的回忆 2021-01-03 01:21

I\'m looking to add a User to a group only if a field of this User is specified as \'True\' once the User is created. Every User that is created would have a \'UserProfile\'

相关标签:
2条回答
  • 2021-01-03 01:53

    try this:

    def save(self, *args, **kwargs):
        # `save` method of your `User` model
    
        # if user hasnt ID - is creationg operation
        created = self.id is None
        super(YourModel, self).save(*args, **kwargs)
    
        # after save user has ID
        # add user to group only after creating
        if created:
            # adding to group here
    
    0 讨论(0)
  • 2021-01-03 01:55

    Another option is using a post_save signal

    from django.db.models.signals import post_save
    from django.contrib.auth.models import User, Group
    
    def add_user_to_public_group(sender, instance, created, **kwargs):
        """Post-create user signal that adds the user to everyone group."""
    
        try:
            if created:
                instance.groups.add(Group.objects.get(pk=settings.PUBLIC_GROUP_ID))
        except Group.DoesNotExist:
            pass
    
    post_save.connect(add_user_to_public_group, sender=User)
    

    Only trouble you will have is if you use a fixture ... (hence the DoesNotExists .. )

    0 讨论(0)
提交回复
热议问题