在Django中,当我将列(无论其数据类型如何)更改为外键引用时,它似乎无法正常工作。举个例子:

models.py来自:

company_id = models.IntegerField(db_column='Company ID', blank=True, null=True)


models.py发送至:

company_id = models.ForeignKey('TblCompanies', db_column='Company ID', null=True, on_delete=models.CASCADE)


当我进行迁移并迁移时,它显示为“确定”;没有问题。但是,当我检查数据库时,它不会将这些更改显示为外键,而是显示索引。

无论如何,我都不是SQL Server专家,但是通常当我从头开始启动应用程序时,这不是问题。我马上就会看到外键。在KEY_COLUMN_USAGE表中,我将看到关联的reference_table _schema,table_name和column_name。

在这种情况下,我将转换一个网站,并从旧的SQL Server移出数据。在上面提到的表和列中,它们显示为NULL。

我在这里想念什么?

这是使用两个外键的CREATE TABLE tbl Communications的输出。参考表应为tbl CustomersCompany IDtbl ContactsContact ID

    tbl Communications | CREATE TABLE `tbl Communications` (
  `Comm ID` int(11) NOT NULL AUTO_INCREMENT,
  `Contact ID` int(11) DEFAULT '0',
  `Rep` varchar(50) DEFAULT NULL,
  `DateTime` datetime DEFAULT NULL,
  `Type` varchar(50) DEFAULT NULL,
  `Notes` longtext,
  `Task ID` int(11) DEFAULT '0',
  `Initiator` varchar(50) DEFAULT NULL,
  `Alert` varchar(50) DEFAULT NULL,
  `Date Entered` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `Company ID` int(11),
  KEY `Comm ID` (`Comm ID`),
  KEY `Contact ID` (`Contact ID`),
  KEY `DateTime` (`DateTime`),
  KEY `Task ID` (`Task ID`),
  KEY `tbl Communications_Company ID_2dac354a_uniq` (`Company ID`),
  KEY `tbl Communications_Contact ID_01d40200_uniq` (`Contact ID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

最佳答案

为什么您自己设置列?
外键应该是其他模型

关于mysql - Django MySQL添加ForeignKey,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41000234/

10-11 23:00