Adding user to group on creation in Django

随声附和 提交于 2019-12-04 15:55:10

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 .. )

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
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!