首页 > 解决方案 > 在项目初始化时创建项目级权限

问题描述

当我第一次manage.py migrate在 Django 项目上运行时,我希望使用一些额外的权限来初始化数据库。我在这里看到这可以在应用程序级别的 apps.py 文件中完成。但是,我希望拥有的权限与整个项目有关,而不是与其中一个应用程序有关。

我的问题是:

标签: djangodjango-permissions

解决方案


要创建权限,您需要一个ContentType并且它们存在于应用程序中,因此您无法创建“项目级”权限。必须在某些应用程序中创建权限(一切都是应用程序),并且在您的项目中安装该应用程序后,您将能够引用整个项目中的权限。

由于权限与 ContentType(模型)相关,您可以在模型中创建权限,如下所示:

class SomeModelClass(models.Model):
    # ...
    class Meta:
        permissions = (
            ("can_drive", "Can drive"),
            ("can_vote", "Can vote in elections"),
            ("can_drink", "Can drink alcohol"),

注意:所有模型都有4个默认权限

另一种创建权限的方法可以在某个地方以编程方式进行,可能是一个信号,一个自定义迁移......看看这里


推荐阅读