何时以编程方式创建自定义Django权限?

时间:2012-04-08 14:53:59

标签: python django permissions

Django 1.4的权限/身份验证文档提供了以下用于以编程方式创建自定义权限的代码段:

编辑(我希望将此权限用于必须链接到特定模型类的权限,但是跨越多种类型的更一般权限。)< / p>

from django.contrib.auth.models import Group, Permission
from django.contrib.contenttypes.models import ContentType

content_type = ContentType.objects.get(app_label='myapp', model='BlogPost')
permission = Permission.objects.create(codename='can_publish',
                                       name='Can Publish Posts',
                                       content_type=content_type)

Source

我的问题是 应该放置此代码。显然这些应该只创建一次,但我不想在shell中这样做。看起来这应该存储在某个文件中。 (为了文件的缘故。)

1 个答案:

答案 0 :(得分:2)

通常只需使用permissions元属性向相应的模型类添加所需的权限就足够了。

这来自official documentation

class Task(models.Model):
    ...
    class Meta:
        permissions = (
            ("view_task", "Can see available tasks"),
            ("change_task_status", "Can change the status of tasks"),
            ("close_task", "Can remove a task by setting its status as closed"),
        )