2009-03-04 2 views
10

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

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

ответ

4

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

4

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

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

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

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

5

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

Из документов Джанго:

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

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

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

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

Смежные вопросы