Как Вы расширяете модель Site в django?

Что лучший подход к расширению модели Site в django? Создание новой модели и ForeignKey Сайт или там другой подход, который позволяет мне разделять модель Site на подклассы?

Я предпочитаю разделять на подклассы, потому что реляционным образом я более удобен, но я беспокоюсь за влияние, которое это окажет со встроенным Администратором.

8
задан John Giotta 12 May 2010 в 18:33
поделиться

2 ответа

Я просто использовал свой собственный подкласс Site и создал для него специального администратора.

По сути, когда вы подклассифицируете модель в django, он создает FK, указывающий на родительскую модель, и позволяет прозрачно получать доступ к полям родительской модели - точно так же, как вы обращаетесь к атрибутам родительского класса в pyhon. Встроенный администратор никак не пострадает, но вам придется отменить регистрацию Sites ModelAdmin и зарегистрировать свой собственный ModelAdmin.

8
ответ дан 5 December 2019 в 10:39
поделиться

Если вы хотите только изменить поведение объекта, но не добавлять никаких новых полей, вам следует рассмотреть возможность использования "прокси-модели" (новая в Django 1.1). Вы можете добавить дополнительные Python-методы к существующим моделям, и многое другое:

Для этого и существует наследование прокси-модели: создание прокси для оригинальной модели. Вы можете создавать, удалять и обновлять экземпляры прокси-модели, и все данные будут сохранены так же, как если бы вы использовали оригинальную (непроксированную) модель. Разница в том, что вы можете изменить такие вещи, как упорядочивание модели по умолчанию или менеджер по умолчанию в прокси, без необходимости изменять оригинал.

Подробнее читайте в документации.

4
ответ дан 5 December 2019 в 10:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: