如何在Django 1.5中为新模型添加权限
目标服务器上运行的是django 1.5,我无法进行更新。数据库的更改由数据库管理员(dba)负责,我也不能去改动。我可以为数据库服务器上由dba创建的新表建立一个模型。我想用管理模型来管理这个新表。我给出的链接是 /admin/mynewapp/mynewmodel/
,但是我被告知没有权限操作这个模型。我查看了auth_permission表,发现我的新模型没有像'更改'、'添加'和'删除'这样的默认权限。我的新模型也没有内容类型。我不想使用像syncdb这样的命令,因为我不确定这样做是否会导致数据丢失。我认为我没有权限的原因可能是因为auth_permission表中没有默认权限。那么,在不使用syncdb命令的情况下,如何在创建模型时添加这些默认权限呢?谢谢。
1 个回答
1
首先,试着使用Django提供的这个命令行工具:
https://github.com/django/django/blob/1.6.5/django/contrib/contenttypes/management.py
这个工具可以用来填充内容类型表(这个表应该在某个地方)。之后,你可以尝试用默认的权限来填充所有应用的权限表(这些应用是在你的settings.py
文件中的INSTALLED_APPS
里列出的)。你可以使用这里的工具函数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)