考虑创建一个以
创建的mysql表CREATE TABLE `table1` (
`id` int(11) NOT NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=latin1
和table2
定义为
CREATE TABLE `table2` (
`id` int(11) NOT NULL DEFAULT '0',
`table1_id` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
从模型中运行迁移。
此处表2引用了1,并且在模型中提到了这种关系。现在,当我在MySQL中查询这些表时,我看不到类似于从table2到1的引用。
我想知道django是否有责任存储这种关系。如果是这样,那么万一我必须将我的ORM从django更改为其他东西,我该如何设法迁移这些关系。
此外,如果我将其视为" ORM只是一个包装器,以确保应该遵守这种关系"那么为什么不通过迁移在表创建过程中创建这样的关系。这意味着确保引用成为表定义的一部分。所以明天,如果我选择使用另一个ORM,我需要做的就是导入表定义。
如果我错了,请纠正我。
答案 0 :(得分:1)
ORM只是处理数据库,模式和检索数据的更高级别方式。它不会存储任何内容,它只是为您提供了一种处理模式中定义的以下数据的方法。
您可以在此处显示的架构中看到table2有table1_id
。
migrations文档中的第一行:
迁移是Django将您对模型所做的更改(添加字段,删除模型等)传播到数据库模式中的方法。
所以,无论你到达那里,最后,你都会留下一个与Django毫无关系的数据库架构。
答案 1 :(得分:0)
他们应该如何相关? Table1_id看起来像是对另一个表的引用。
如何填充table1_id?如果全部是手动输入,那么应该没有问题。