我有一个帐户模型的工作,我想内部连接,而不必在帐户中创建模型的附加settings_id
列,因为该帐户的PK表格完全匹配设置表格上的PK。我一直试图建立这些表&列之间的OneToOne关系,但无法弄清楚如何做到这一点,而无需创建一个新的列或东西。我试图尽可能地使用现有的模式,并且宁愿不创建不必要的列。的Django模型OneToOneField,而无需创建额外的_id数据库列
Class Account(models.Model):
login_id = models.AutoField(primary_key=True)
settings = models.OneToOneField('Settings', to_field='login_id', null=True,
related_name='settings', db_column='login_id') # Doesn't work because login_id already exists....
Class Settings(model.Model):
login_id = models.OneToOneField('Account', to_field='login_id', related_name='account')
基本上,我试图复制该查询:
SELECT * FROM account
INNER JOIN settings
ON account.login_id=settings.login_id
WHERE account.login_id=1
基于错误,Django的ORM似乎对创建的账户表中的新列真执着,但我不”当两个表格之间的关系如此简单时,请参阅添加新列的要点:account.login_id = settings.login_id
为什么你有指向对方两个模型一比一的关系?你不需要在双方指定。在其中任何一个上移除它。正向和反向关系通过ORM可达 – karthikr 2014-10-04 02:25:44
由于它们是相关的,它似乎是合乎逻辑的。我不认为这是我创建的错误,但我会尝试从“设置”模型中删除关系,看看是否有帮助。 – 2014-10-04 02:26:56
这将是问题的一部分。另一件事是 - 你究竟想达到什么目的?看起来你不需要在典型情况下运行这样的查询。 – karthikr 2014-10-04 02:30:36