Django admin——admin继承

Django admin - admin inheritance

在注册django admin的时候继承了另一个admin,但是不知道为什么list_display的model变了

我用代码详细说明情况

@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 Admin 似乎继承自 UserAdmin。 在这种情况下,User模型的list_display不应该出现在list_display中吗?

不明白销售模式的list_display为什么会出来。 如果我想在继承 UserAdmin 的同时显示 Sales 模型的 list_display,难道我不应该像下面那样重新声明 list_display 吗?

@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。有知道的请解释一下。

get_list_display 方法重写为 return 基于当前模型的动态 list_display。

仅供参考,您的管理员 类 应该继承自 admin.ModelAdmin 而不是 models.Model

@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