如何在Django 1.5中为新模型添加权限

0 投票
1 回答
1242 浏览
提问于 2025-04-18 17:23

目标服务器上运行的是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)

撰写回答