Вам нужно будет использовать:
StellarObjectAdmin.list_display.insert(1, 'size')
Также вам нужно изменить list_display
с tuple
(который неизменный ) на list
. Например: list_display = [ ... ]
.
Наконец, вы, вероятно, будете удивлены тем, что происходит: вставив элемент, вы собираетесь изменить список на StellarObjectAdmin
. Что вы, вероятно, хотите сделать, это:
list_display = list(StellarObjectAdmin.list_display) # copy the list
list_display.insert(1, 'size')
Что создаст новую копию списка для вашего PlanetAdmin
класса.
Это происходит из-за того, как Python наследует. По сути, Python никогда не внедряет имена в пространство имен (например, некоторые языки вводят магическую this
«переменную» в методы, в то время как Python заставляет вас явно определять эквивалент - self
- в качестве первого аргумента методов), и так как class
- это просто другое пространство имен, в него ничего не вводится (например, значения в его суперклассах).
Когда у вас есть класс B
, который наследуется от другого класса, A
, и вы пытаетесь найти свойство в B
- B.foo
- он сначала проверяет, является ли foo
находится в пространстве имен B
, и если это не так, он продолжает проверять пространство имен A
и т. д.
Надеюсь, это понятно ... Если нет, я могу уточнить (или попытаться найти соответствующую документацию).