首页 > 解决方案 > Django如何通过信号将成员添加到组中?

问题描述

我的其他信号正在工作,例如更新和创建实例,但我不明白为什么它没有将成员添加到组中?

@receiver(post_save,sender=settings.AUTH_USER_MODEL)
def update_user_profile_from_User_model(sender,instance,created,**kwargs):
    if instance.email:
        MyAuthors.objects.filter(user=instance).update(user=instance,first_name=instance.first_name,last_name=instance.last_name,email=instance.email,is_blog_author=instance.is_blog_author)
        
        if instance.is_blog_author == True:
            my_group = Group.objects.get(name='myauthors')
            print("group name: ", my_group )
            add_user = my_group.user_set.add(instance)  
            print("add_user: ", add_user )   
   
      

打印结果:

group name:  myauthors
add_user:  None

我也试过这个,但没有奏效。

group = Group.objects.get(name='myauthors')
        if instance.is_blog_author:
           instance.groups.add(group)
           instance.save()

#update1 我的用户模型:

class UserManagement(AbstractUser):
      is_blog_author = models.BooleanField(default=False)
      is_editor = models.BooleanField(default=False)
      is_subscriber = models.BooleanField(default=False)
      is_customer = models.BooleanField(default=False)

#update2 添加以下更改后,我的用户添加到组但未保存。

if instance.is_blog_author == True:
            User_id = get_user_model()
            user_add_to_group = User_id.objects.get(pk=instance.id)
            my_group = Group.objects.get(name='myauthors')
            print("group name: ", my_group )
            add_user = my_group.user_set.add(user_add_to_group)  
            print("add_user: ", user_add_to_group )

打印结果:

group name:  myauthors
add_user:  aws

如何保存信号?我尝试了 add_user.save() 并收到此错误

'NoneType' object has no attribute 'save'

标签: pythonpython-3.xdjango

解决方案


推荐阅读