Django外键作为复合主键

2024-05-13 08:58:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在MySQL中使用django,在使用'inspectdb'命令创建模型.py文件。在

DDL优先:

CREATE TABLE YDB_Collects (
COriginal_Data_Type_ID VARCHAR(16) NOT NULL,
CTask_Name VARCHAR(16) NOT NULL,
PRIMARY KEY (COriginal_Data_Type_ID, CTask_Name),
INDEX FK_COLLECTS_TASK (CTask_Name),
CONSTRAINT FK_COLLECTS_ORIGINAL_DATA_TYPE FOREIGN KEY (COriginal_Data_Type_ID) REFERENCES YDB_Original_Data_Type (Original_Data_Type_ID),
CONSTRAINT FK_COLLECTS_TASK FOREIGN KEY (CTask_Name) REFERENCES YDB_Task (Task_Name)
)

如您所见,COriginal_Data_Type_IDCTask_Name是外键,而且两者都是复合主键。在

在DDL django的'inspectdb'命令给出此模型后:

^{pr2}$

然后,当我运行“makemigrations”命令时,它会给我错误消息:“unique一起指的是不存在的字段”“COriginal”“Data”“u Type”“ID”“和”“CTask”“u Name”“。”。在

当我改变

 unique_together = (('COriginal_Data_Type_ID', 'CTask_Name'),)

进入

unique_together = (('coriginal_data_type ', 'ctask_name'),)

好吧,没问题,但这是正确的方法吗?似乎下面的代码和我的DDL有不同的模式…我定义的原始外键是数据类型的id,而不是数据类型本身。在

我做错什么了?我的原始数据字段和CTask名称字段在哪里?在


Tags: djangokeyname命令iddatatypeunique