【问题标题】:When to programmatically create custom Django permissions?何时以编程方式创建自定义 Django 权限?
【发布时间】:2012-04-21 06:23:36
【问题描述】:

Django 1.4 的权限/身份验证文档提供了以下 sn-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 中这样做。似乎这应该存储在某个文件中。 (为了记录。)

【问题讨论】:

    标签: python django permissions


    【解决方案1】:

    通常只需使用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"),
            )
    

    【讨论】:

    • 对不起,我应该澄清一下 - 这是针对全局权限或未链接到特定模型类的权限。
    • 我明白了。如果将其存放在固定装置中会怎样?
    • 我对 Python 和 Django 都很陌生,但是快速的 Google 搜索表明,fixture 可能是一个很好的解决方案。我会四处寻找,谢谢!
    猜你喜欢
    • 2014-04-30
    • 2014-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-21
    • 2018-09-10
    • 1970-01-01
    相关资源
    最近更新 更多