Что лучший подход к расширению модели Site в django? Создание новой модели и ForeignKey Сайт или там другой подход, который позволяет мне разделять модель Site на подклассы?
Я предпочитаю разделять на подклассы, потому что реляционным образом я более удобен, но я беспокоюсь за влияние, которое это окажет со встроенным Администратором.
Я просто использовал свой собственный подкласс Site и создал для него специального администратора.
По сути, когда вы подклассифицируете модель в django, он создает FK, указывающий на родительскую модель, и позволяет прозрачно получать доступ к полям родительской модели - точно так же, как вы обращаетесь к атрибутам родительского класса в pyhon. Встроенный администратор никак не пострадает, но вам придется отменить регистрацию Sites ModelAdmin и зарегистрировать свой собственный ModelAdmin.
Если вы хотите только изменить поведение объекта, но не добавлять никаких новых полей, вам следует рассмотреть возможность использования "прокси-модели" (новая в Django 1.1). Вы можете добавить дополнительные Python-методы к существующим моделям, и многое другое:
Для этого и существует наследование прокси-модели: создание прокси для оригинальной модели. Вы можете создавать, удалять и обновлять экземпляры прокси-модели, и все данные будут сохранены так же, как если бы вы использовали оригинальную (непроксированную) модель. Разница в том, что вы можете изменить такие вещи, как упорядочивание модели по умолчанию или менеджер по умолчанию в прокси, без необходимости изменять оригинал.
Подробнее читайте в документации.