djangoを既存のアプリケーションと一緒に実行し、データベースを共有しています。そして、既存の「ユーザー」テーブル(Django自身のものではない)を使用してユーザー情報を格納したいと思います。
User定義のMetaクラスで、Djangoが使用するテーブルの名前を変更できるようです。
ただし、Djangoコア自体は変更しない方がよいでしょう。
したがって、コアauth.Userクラスを次のようにサブクラス化できると考えていました。
class OurUser(User) :
objects = UserManager()
class Meta:
db_table = u'our_user_table'
ここでの目的は、カスタマイズされたUserクラスにフィールドを追加することではありません。ただし、代替テーブルを使用するだけです。
ただし、これは失敗します(ORMは、our_user_tableに元のUserテーブルを参照する外部キーが必要であると想定しているためと思われますが、そうではありません)。
それで、私たちがやりたいことをするためのこの賢明な方法はありますか?クラスをテーブルにマップする簡単な方法を見逃したことがありますか?または、そうでない場合、これを機能させることができますか?
アップデート :
local_settings.pyのUserの_metaに「モンキーパッチ」を適用するだけで、必要な変更を加えることができると思います。
User._meta.db_table = 'our_user_table'
私がこれをした場合に起こり得る何か悪いことを誰かが考えることができますか?(特に、かなり典型的なDjango / Pinaxアプリケーションのコンテキストでは?)