Django Модель Наследования. Скрытие или удаление полей - PullRequest
10 голосов
/ 04 марта 2009

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

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

Ответы [ 3 ]

5 голосов
/ 04 марта 2009

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

Из документации Django:

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

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

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

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

4 голосов
/ 04 марта 2009

Вместо наследования рассмотрите возможность использования настроенных форм.

  1. Вы можете исключить из отображения поля, которые все еще находятся в модели.

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

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

4 голосов
/ 04 марта 2009

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

...