В Django, когда я изменяю столбец, независимо от его типа данных, ссылку на ссылку foreignkey, он, похоже, не работает. В качестве примера:Django MySQL Добавить ForeignKey
models.py От:
company_id = models.IntegerField(db_column='Company ID', blank=True, null=True)
models.py To:
company_id = models.ForeignKey('TblCompanies', db_column='Company ID', null=True, on_delete=models.CASCADE)
Когда я makemigrations & мигрировать он показывает, как "OK"; без вопросов. Но когда я проверяю БД, он не отображает эти изменения как внешние ключи, а вместо этого индексирует.
Я не являюсь гуру SQL-сервера любым способом, но обычно, когда я запускаю приложения с нуля, это не проблема. Я сразу увижу внешние ключи. В таблице KEY_COLUMN_USAGE я бы увидел связанные reference_table _schema, table_name и column_name.
В этом случае я конвертирую веб-сайт и переношу данные со старого SQL-сервера. В приведенной выше таблице и столбцах они отображаются как NULL.
Что мне здесь не хватает?
Вот результат CREATE TABLE tbl Communications
, который использует два внешних ключа. Ссылочные таблицы ДОЛЖНЫ быть tbl Customers
. Company ID
и tbl Contacts
. Contact 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
Я не устанавливаю колонку самостоятельно. Как я уже сказал, я настраивал models.py и запускал makemigrations & migrate. – Flibertyjibbet
Вы можете скачать файл models.py –