在Django中,如何在不同的mysql dbs中实现表之间的外键关系

时间:2012-12-17 11:34:48

标签: django django-models django-admin foreign-key-relationship

在MySQL中,我们可以在不同数据库中的表之间建立外键关系。我发现很难在各自的Django模型上翻译这种关系。

我在docs中读过不支持跨db关系,但是我们可以覆盖一些属性/函数,以便我们可以将表标识为DB.table而不是{{1} }?

例如,table中的表格table1会在DB1中的某些table2中被引用。 Django尝试(失败)在DB2中找到table1,并提出DB2

DatabaseError

Variable Value charset 'latin1' exc <class '_mysql_exceptions.ProgrammingError'> self <MySQLdb.cursors.Cursor object at 0x2a87ed0> args (195,) db <weakproxy at 0x2a95208 to Connection at 0xdad0> value ProgrammingError(1146, "Table 'DB2.table1' doesn't exist") query 'SELECT (1) AS `a` FROM `table1` WHERE `table1`.`ndx` = 195 LIMIT 1' 方法外,几乎所有内容都有效。向正确的方向推进会有很大帮助!

2 个答案:

答案 0 :(得分:0)

您需要Manually Selecting a Database

看看你给出的错误,你应该这样做:

qs = table1.objects.using('DB1 ').filter(pk=id)
# just an example

在此示例中,我们明确告诉Django在table1中找到DB1

答案 1 :(得分:0)

似乎我们无法做任何事情来让不同mysql数据库中的两个表之间的关系工作。这是设计的。票证17875有一些信息。我们需要编写可以解决此问题的代码。