如何在django 1.5中为程序中的新模型添加权限

时间:2014-08-15 09:41:45

标签: python django django-1.5

目标服务器正在运行django 1.5,我无法更新。数据库由dba更改,我无法更改。我可以在数据库服务器上为dba创建的新表创建模型。我想使用管理模型来管理它。我给出了像/admin/mynewapp/mynewmodel/这样的链接,但我被告知我没有权限操作该模型。我可以查看auth_permission表,并且没有默认权限,例如'更改','添加'并且'删除'为我的新模型。我的新模型也没有内容类型。我不想使用像syncdb这样的命令,因为我不确定它是否会造成一些数据丢失。我认为我没有权限的原因可能是auth_permission表中没有默认权限。那么在不使用命令syncdb的情况下创建模型时如何添加这些默认权限?感谢。

1 个答案:

答案 0 :(得分:1)

首先尝试使用Django中提供的命令行实用程序:

https://github.com/django/django/blob/1.6.5/django/contrib/contenttypes/management.py

填写内容类型表(也应该在那里的某个地方)。之后,您可以尝试使用所有应用的默认权限填充权限表(安装在INSTALLED_APPS中的settings.py)。你可以从这里获得效用函数create_permissions

https://github.com/django/django/blob/1.5/django/contrib/auth/management/init.py

这将是:

from django.contrib.contenttypes.management import update_all_contenttypes
from django.contrib.auth.management import create_permissions
from django.db.models import get_apps
update_all_contenttypes()
for app in get_apps():
    create_permissions(app, None, 2)