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

Django中Mixin权限继承问题:模型权限在Admin面板不显示怎么办?

解决Django抽象基类权限未在Admin用户组中显示的问题

这个问题的核心原因是:Django不会自动合并抽象基类的permissions设置到子类中。当你在子类的Meta中重新定义permissions时,会直接覆盖基类的权限配置,而不是将两者合并,这就导致基类的权限不会被生成,甚至可能子类的权限也因为配置方式的问题没被正确识别。

下面是具体的修复步骤和代码示例:

1. 手动合并基类与子类的权限

在子类的Meta类中,我们需要主动将基类的权限和子类自定义的权限合并在一起:

from django.db import models

class BaseMixin(models.Model):
    class Meta:
        abstract = True
        permissions = (
            ("can_change_something", "Can change something"),
        )

class Article(BaseMixin):
    # 示例模型字段,可替换为你的实际字段
    title = models.CharField(max_length=200)
    content = models.TextField()

    class Meta:
        # 合并基类权限和子类自定义权限
        permissions = BaseMixin.Meta.permissions + (
            ("can_change_something_on_articles", "Can change something on articles..."),
        )

2. 更新数据库权限

权限是通过Django迁移创建的,所以修改完代码后需要执行以下命令,让Django生成新的权限记录:

python manage.py makemigrations
python manage.py migrate

3. 验证Admin显示

完成上述步骤后,刷新Admin面板的用户组权限设置页面,你就能看到来自基类和子类的所有权限了。

额外提醒:如果你的模型没有注册到Admin后台,权限也不会显示在用户组设置里,确保你已经在admin.py中注册了Article模型:

from django.contrib import admin
from .models import Article

admin.site.register(Article)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:16:27