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

如何调用Django的auth_permission模型以代码方式添加新权限?

如何导入Django的Permission模型并添加新权限

嘿,这个问题我太熟了!Django自带的auth_permission数据表对应的Python模型是Permission,你可以直接从Django的auth模块里导入它:

from django.contrib.auth.models import Permission

不过权限通常和具体业务模型绑定,所以一般还需要用到ContentType(用来关联权限对应的目标模型),它同样在auth模块中:

from django.contrib.auth.models import Permission, ContentType

给你举个贴合你习惯的实际例子:假设你有个自定义模型Book,想给它新增一个「可以发布书籍」的权限,用get_or_create的写法可以这么做:

# 先导入你的自定义模型
from myapp.models import Book

# 获取Book模型对应的ContentType
content_type = ContentType.objects.get_for_model(Book)

# 创建或获取目标权限
permission, created = Permission.objects.get_or_create(
    codename='can_publish',  # 权限的唯一标识,建议用小写+下划线格式
    name='Can Publish Books',  # 权限的友好显示名称
    content_type=content_type,  # 把权限和Book模型绑定
)

这里要提醒你:get_or_create方法会自动保存新建的对象,所以你不需要额外调用mdl.save(),除非之后修改了这个权限的其他字段才需要手动保存。

如果是想创建不关联任何模型的全局权限,也可以省略content_type参数,但这种场景在实际开发中很少用到,大部分权限都是和具体业务模型绑定的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:04:50