如何在Django项目中恢复模型已删除的权限
恢复误删的Django模型权限
方法1:使用Django内置命令重新生成权限
这是最安全的方式,Django可以自动重新创建缺失的模型权限:
- 打开终端,进入项目根目录,执行命令进入Django Shell:
python manage.py shell - 在Shell中依次执行以下代码(替换
'blog'为你的Post模型所在的app名称):from django.contrib.auth.management import create_permissions from django.apps import apps # 获取对应app的配置 app_config = apps.get_app_config('blog') # 重新生成该app下所有模型的权限,verbosity=2会显示详细日志 create_permissions(app_config, verbosity=2)
执行完成后,缺失的Post模型权限会被重新创建,之后你可以重新将这些权限分配给mod用户组。
方法2:手动往数据库插入权限记录
如果你熟悉数据库操作,可以直接在auth_permission表中插入对应的权限记录:
- 先获取Post模型对应的ContentType ID:
在Django Shell中执行:from django.contrib.contenttypes.models import ContentType from blog.models import Post ct = ContentType.objects.get_for_model(Post) print(ct.id) # 记下这个ID,比如假设是3 - 打开数据库管理工具(如pgAdmin、phpMyAdmin等),执行插入SQL语句(替换
<ct_id>为你刚才获取的ID):
比如恢复删除的删除Post权限:
其他权限对应的SQL:INSERT INTO auth_permission (name, content_type_id, codename) VALUES ('Can delete post', <ct_id>, 'delete_post');- 添加Post:
VALUES ('Can add post', <ct_id>, 'add_post') - 修改Post:
VALUES ('Can change post', <ct_id>, 'change_post') - 查看Post:
VALUES ('Can view post', <ct_id>, 'view_post')
- 添加Post:
方法3:从数据库备份恢复
如果你有近期的数据库备份,可以直接恢复auth_permission表中的对应记录,这种方式适合误删多个权限或数据丢失较严重的场景。
内容的提问来源于stack exchange,提问作者Syaf Dtr
相关产品推荐
相关产品推荐

