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

已添加权限但has_perm方法仍返回False的技术咨询

Django用户权限已添加但Shell验证不生效的解决办法
  • 重新获取用户实例
    Django会缓存用户权限数据,在Shell中添加权限后,原来的user2对象仍保留旧的缓存数据。必须重新从数据库拉取用户:

    user2 = User.objects.get(id=user2.id)
    # 再次执行验证
    user2.get_user_permissions()
    user2.has_perm('blog.add_post')
    
  • 区分用户直接权限与组权限
    get_user_permissions()仅返回用户直接拥有的权限,如果权限是通过用户组添加的,要用get_all_permissions()查看所有权限(包含组权限):

    user2.get_all_permissions()
    
  • 核对权限字符串格式
    确认权限字符串'blog.add_post'是否与实际权限匹配,可通过以下命令验证:

    from django.contrib.auth.models import Permission
    perm = Permission.objects.get(name='Can add post')
    print(f"{perm.content_type.app_label}.{perm.codename}")  # 输出应为blog.add_post
    
  • 检查用户激活状态
    若用户is_active为False,has_perm会直接返回False,执行以下命令确认:

    print(user2.is_active)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 08:52:06