You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django项目中恢复模型已删除的权限

恢复误删的Django模型权限

方法1:使用Django内置命令重新生成权限

这是最安全的方式,Django可以自动重新创建缺失的模型权限:

  1. 打开终端,进入项目根目录,执行命令进入Django Shell:
    python manage.py shell
    
  2. 在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表中插入对应的权限记录:

  1. 先获取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
    
  2. 打开数据库管理工具(如pgAdmin、phpMyAdmin等),执行插入SQL语句(替换<ct_id>为你刚才获取的ID):
    比如恢复删除的删除Post权限:
    INSERT INTO auth_permission (name, content_type_id, codename)
    VALUES ('Can delete post', <ct_id>, 'delete_post');
    
    其他权限对应的SQL:
    • 添加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')

方法3:从数据库备份恢复

如果你有近期的数据库备份,可以直接恢复auth_permission表中的对应记录,这种方式适合误删多个权限或数据丢失较严重的场景。


内容的提问来源于stack exchange,提问作者Syaf Dtr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 22:12:10