小编典典

如何在Django的项目设置过程中创建组并分配权限?

python

我知道我可以在Django项目的管理区域中创建用户组并为其分配权限。我还可以通过从django的auth模块导入GroupPermission建模来创建组并为其分配权限。

我想知道在设置项目时是否可以通过任何方式创建组并为其分配权限。因此,如果我有用户类型,则为 AdminDeveloper
TesterProject Manager
。他们基本上是具有不同权限级别的用户组。我没有自定义User模型,只能按分配给它们的组进行区分。因此,有没有一种方法可以创建这些组并向其分配所需的权限,例如在我运行时为admin创建权限时python manage.py migrate


阅读 216

收藏
2021-01-20

共1个答案

小编典典

您可以定义一个post_migrate信号来创建所需实例UserGroup模型实例(如果尚不存在)。

当您使用中创建应用程序时python manage.py startapp <app_name>,它将AppConfig在apps.py文件中创建一个类。

您可以在AppConfig类定义中指定要调用的信号。说信号被呼叫了populate_models。在这种情况下,将AppConfig修改为如下所示:

from django.apps import AppConfig
from django.db.models.signals import post_migrate

class AppConfig(AppConfig):
    name = 'app'

    def ready(self):
        from .signals import populate_models
        post_migrate.connect(populate_models, sender=self)

并在signals.py中定义populate_models函数。

def populate_models(sender, **kwargs):
    from django.contrib.auth.models import User
    from django.contrib.auth.models import group
    # create groups
    # assign permissions to groups
    # create users
2021-01-20