2012-04-08 67 views
7

Django的1.4许可/认证文档提供了编程方式创建自定义权限下面的代码片段:何时以编程方式创建自定义Django权限?

编辑:(我想使用这个对于那些必然联系到一个特定的模型类的权限,但更普遍的权限跨越多个类型。)

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中执行。它似乎应该存储在某个文件中。 (为了便于说明)

回答

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"), 
     ) 
+0

对不起,我应该澄清 - 这是全球性的权限,或者没有链接到一个特定的模型类的权限。 – 2012-04-08 14:58:50

+2

我明白了。如果将它存储在夹具中会怎样? – aruseni 2012-04-08 15:03:46

+0

我对Python和Django都很新,但Google的快速搜索表明灯具可能是一个很好的解决方案。我会四处打听,谢谢! – 2012-04-08 15:06:35

相关问题