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