【发布时间】:2016-10-17 03:18:51
【问题描述】:
我有两个独立的 Django 应用程序和两个不同的数据库。在 APP1 中,我需要 APP2 数据库中的一个表中的所有记录。除此之外,我的一个 APP1 模型有一个 ForeignKey 指向 APP2 模型,根据文档,这是不可能的。
由于 Django 不支持跨多个数据库的外键关系,我不知道该怎么做。
官方文档:
如果您使用路由器将模型分区到不同的数据库, 这些模型定义的任何外键和多对多关系 必须在单个数据库内部。
这是因为参照完整性。为了维持一个 两个对象之间的关系,Django 需要知道 相关对象的主键有效。如果主键是 存储在单独的数据库中,无法轻松评估 主键的有效性。
作为一种解决方案,我曾考虑合并这两个数据库,因此这两个 APPS 将使用同一个数据库。但是我会在模型上弄得一团糟,因为 APP1 只需要 APP2 中的一个表,并且不需要剩余的模型和数据库表。另外,我很确定在从这两个应用程序迁移到同一个数据库时会产生问题(冲突)。
我正在使用 Django DB 路由器,这是我迄今为止尝试过的:
class Car(models.Model):
_DATABASE = "cars"
color = models.TextField(max_length=1000)
...
class Employee(models.Model):
id = models.IntegerField()
car = models.ForeignKey(Car)
...
它给了我:
django.db.utils.OperationalError: (1054, "Unknow column 'car' in 'employees'")
【问题讨论】:
标签: mysql django foreign-keys multiple-databases