默认后台设置多个组,当后台新增或通过前台注册新用户后,自动分配到普通用户组以获取对应的权限,方便管理。
大概意思就是这样:要实现在Django Admin开发中,将新增用户或新注册的用户自动分配到某个组中,可以使用信号(signal)来完成。
在对应的app下新建一个文件如signal.py:
from django.contrib.auth.models import Group
from django.contrib.auth import get_user_model
from django.db.models.signals import post_save
from django.dispatch import receiver
@receiver(post_save, sender=get_user_model())
def assign_user_to_group(sender, instance, created, **kwargs):
if created:
group = Group.objects.get(name='your_group_name') # 替换成你要分配的组的名称
instance.groups.add(group)
然后,在你的应用的apps.py文件中注册该信号接收函数:
from django.apps import AppConfig
class YourAppConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'your_app_name'
def ready(self):
import your_app_name.signals # 替换成你的信号接收函数所在的文件路径
最后,在你的应用的__init__.py文件中添加如下代码:
default_app_config = 'your_app_name.apps.YourAppConfig' # 替换成你的AppConfig类的路径
这样,当有新用户创建或注册时,信号接收函数assign_user_to_group
会自动将其分配到指定的组中。记得将代码中的your_group_name
、your_app_name
和your_app_name.signals
替换成你自己的组名、应用名和信号接收函数所在的文件路径。