Django admin - наследование администратора

При регистрации django admin, я унаследовал другой admin, но я не знаю, почему модель 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):
    pass

Согласно приведенному выше коду, SalesAdmin Admin, по-видимому, наследует от UserAdmin. В таком случае, не должен ли list_display модели User отображаться в list_display?

Я не понимаю, почему выводится list_display модели Sales. Если я хочу отобразить list_display модели Sales при наследовании UserAdmin, не должен ли я передекларировать 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, чтобы вернуть динамическое отображение списка, основанное на текущей модели.

К вашему сведению, ваши классы администраторов должны наследоваться от 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
Вернуться на верх