我们正在与现有应用程序一起运行 django - 并与 - 共享数据库。我们想使用现有的“用户”表(不是 Django 自己的)来存储用户信息。
看起来可以在用户定义的 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 中“猴子修补”用户的 _meta 来做出我想要的改变
User._meta.db_table = 'our_user_table'
谁能想到如果我这样做会发生什么不好的事情?(特别是在相当典型的 Django / Pinax 应用程序的上下文中?)