首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django管理-管理继承

Django管理-管理继承
EN

Stack Overflow用户
提问于 2022-04-28 08:29:35
回答 1查看 72关注 0票数 0

注册django管理时,我继承了另一个管理员,但我不知道为什么要更改list_display模型。

让我用代码详细解释一下情况。

代码语言:javascript
运行
复制
@admin.register(User) 
class UserAdmin(models.Model):
    list_display = [a.name for a in User._meta.concrete_fields]


@admin.register(Sales)
class SalesAdmin(UserAdmin):
    pass

根据上面的代码,SalesAdmin管理似乎是从UserAdmin继承的。在这种情况下,用户模型的list_display不应该出现在list_display中吗?

我不明白为什么销售模式的list_display会出现。如果我想在继承list_display的同时显示销售模型的UserAdmin,难道不需要按照如下所示重新声明list_display吗?

代码语言:javascript
运行
复制
@admin.register(User) 
class UserAdmin(models.Model):
    list_display = [a.name for a in User._meta.concrete_fields]


@admin.register(Sales)
class SalesAdmin(UserAdmin):
    list_display = [a.name for a in Sales._meta.concrete_fields]

我没有重新声明list_display,但我不知道它是否自动输出为已更改模型的list_display。如果有人知道,请解释。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-28 08:37:21

重写get_list_display方法以返回基于当前模型的动态list_display。

FYI,您的管理类应该从admin.ModelAdmin而不是models.Model继承。

代码语言:javascript
运行
复制
@admin.register(User) 
class UserAdmin(admin.ModelAdmin):
    def get_list_display(self, request):
        return [a.name for a in self.model._meta.concrete_fields]


@admin.register(Sales)
class SalesAdmin(UserAdmin):
    pass
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72040396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档