Наследование модели Django. Скрытие или удаление полей

Я хочу наследовать класс модели из некоторого стороннего кода. Я не буду использовать некоторые поля, но хочу, чтобы мой клиент мог редактировать модель в Admin. Лучше всего скрыть их от администратора или я могу фактически предотвратить их создание в первую очередь?

Дополнительно - что мне делать, если требуется одно из нежелательных полей? Моя первая мысль - переопределить метод сохранения и просто поместить значение по умолчанию.

Ответ 1

Если вы наследуете модель, то, вероятно, неразумно пытаться скрыть или отключить любые существующие поля. Лучшее, что вы могли бы сделать, это именно то, что вы предложили: переопределить save() и обработать свою логику там.

Ответ 2

Вы можете управлять полями, редактируемыми в admin.

В документах Django:

"Если вам нужна форма для модели автора, которая содержит только поля имени и заголовка, вы должны указать поля или исключить следующее:

class AuthorAdmin(admin.ModelAdmin):
    fields = ('name', 'title')

class AuthorAdmin(admin.ModelAdmin):
    exclude = ('birth_date',)"

http://docs.djangoproject.com/en/dev/ref/contrib/admin/

Ответ 3

Вместо того, чтобы наследовать, рассмотрите использование настраиваемых форм.

  • Вы можете удалить поля с дисплея, которые все еще находятся в модели.

  • Вы можете проверить и предоставить значения по умолчанию в форме clean().

См. http://docs.djangoproject.com/en/dev/ref/contrib/admin/#adding-custom-validation-to-the-admin