Мы работаем с django вместе и совместно используем базу данных с существующим приложением. И мы хотим использовать существующую «пользовательскую» таблицу (не собственную Django) для хранения пользовательской информации.
Похоже, можно изменить имя таблицы, которую использует Django, в мета-классе определения пользователя.
Но мы бы предпочли не менять само ядро Django.
Итак, мы подумали, что могли бы создать подкласс базового класса auth.User, например:
class OurUser(User) :
objects = UserManager()
class Meta:
db_table = u'our_user_table'
Здесь цель не состоит в том, чтобы добавлять какие-либо дополнительные поля в пользовательский класс пользователя. Но просто использовать альтернативную таблицу.
Однако это терпит неудачу (вероятно, потому что ORM предполагает, что our_user_table должен иметь внешний ключ, ссылающийся на исходную таблицу User, чего нет).
Итак, это разумный способ сделать то, что мы хотим сделать? Я упустил какой-то более простой способ отобразить классы на таблицы? Или, если нет, это можно заставить работать?
Обновление:
Я думаю, что я смогу внести необходимые изменения, просто "установив обезьяны" на _meta пользователя в local_settings.py
User._meta.db_table = 'our_user_table'
Может ли кто-нибудь придумать что-нибудь плохое, что может случиться, если я сделаю это? (Особенно в контексте довольно типичного приложения Django / Pinax?)