Есть ли способ выразить настройки админки Django внутри моделей вместо admin.py? - PullRequest
2 голосов
/ 16 декабря 2009

Говоря о Джанго 1.1.1. Однажды я подумал (0,96), что вещи, помещенные в файл admin.py, являются частью внутреннего класса модели.

Есть определенная красота в том, что все это в одном месте. Но я не знаю, было ли это изменение из-за необходимости. Какие-либо веские причины, так или иначе?

Ответы [ 4 ]

2 голосов
/ 16 декабря 2009

Они убрали эту особую магию, но ничто не мешает вам поместить ваш подкласс admin.ModelAdmin сразу после подклассом models.Model. Я предпочитаю хранить их вместе, потому что менее вероятно, что я забуду добавить поле в список для отображения на дисплее администратора.

0 голосов
/ 01 апреля 2010

используйте класс Admin внутри ваших моделей, как вы используете класс Meta а затем определите, что вы хотите

0 голосов
/ 16 декабря 2009

Нет способа выразить параметры администратора внутри определения модели как внутренний класс в последней версии. Но нет причины, по которой вы не можете поместить свой класс ModelAdmin сразу после вашего класса Model в свой файл models.py. После этого вы можете просто позвонить в admin.site.register () сразу после определения.

Вы можете столкнуться с проблемой, что register () вызывается более одного раза для модели, что приведет к ошибке. models.py должен загружаться только один раз, так что это должно работать. Если нет, вы можете определенно объявить свой класс ModelAdmin в models.py, а затем поместить все ваши вызовы register () в admin.py.

Вот несколько причин, по которым я могу представить это в admin.py:

  • Конвенция - кажется, это становится лучшей практикой.
  • Разделение - определения администратора не имеют большого отношения к модели.
  • Чистота - возможно, нет необходимости заполнять файл models.py вещами, которые вы не собираетесь сильно менять.

Но если ваш файл models.py не будет очень длинным, я вижу привлекательность наличия их рядом друг с другом.

0 голосов
/ 16 декабря 2009

Возможно, в любом случае было бы не очень хорошей идеей включать это в модели, так как это было бы лишней информацией при использовании сайта без прав администратора? (Из соображений производительности)

...