Ответ 1
Если вы наследуете модель, то, вероятно, неразумно пытаться скрыть или отключить любые существующие поля. Лучшее, что вы могли бы сделать, это именно то, что вы предложили: переопределить save()
и обработать свою логику там.
Я хочу наследовать класс модели из некоторого стороннего кода. Я не буду использовать некоторые поля, но хочу, чтобы мой клиент мог редактировать модель в Admin. Лучше всего скрыть их от администратора или я могу фактически предотвратить их создание в первую очередь?
Дополнительно - что мне делать, если требуется одно из нежелательных полей? Моя первая мысль - переопределить метод сохранения и просто поместить значение по умолчанию.
Если вы наследуете модель, то, вероятно, неразумно пытаться скрыть или отключить любые существующие поля. Лучшее, что вы могли бы сделать, это именно то, что вы предложили: переопределить save()
и обработать свою логику там.
Вы можете управлять полями, редактируемыми в admin.
В документах Django:
"Если вам нужна форма для модели автора, которая содержит только поля имени и заголовка, вы должны указать поля или исключить следующее:
class AuthorAdmin(admin.ModelAdmin):
fields = ('name', 'title')
class AuthorAdmin(admin.ModelAdmin):
exclude = ('birth_date',)"
Вместо того, чтобы наследовать, рассмотрите использование настраиваемых форм.
Вы можете удалить поля с дисплея, которые все еще находятся в модели.
Вы можете проверить и предоставить значения по умолчанию в форме clean()
.
См. http://docs.djangoproject.com/en/dev/ref/contrib/admin/#adding-custom-validation-to-the-admin