我目前正在使用django和MySQL,并在使用' inspectdb'命令来创建我的models.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_ID 和 CTask_Name 是外键,两者都是复合主键。
此DDL后,django' inspectdb'命令给出了这个模型:
class YdbCollects(models.Model):
coriginal_data_type = models.ForeignKey('YdbOriginalDataType', db_column='COriginal_Data_Type_ID') # Field name made lowercase.
ctask_name = models.ForeignKey('YdbTask', db_column='CTask_Name') # Field name made lowercase.
class Meta:
managed = False
db_table = 'ydb_collects'
unique_together = (('COriginal_Data_Type_ID', 'CTask_Name'),)
然后,当我跑步时,制作动画'命令,它给我错误信息:" unique-together指的是不存在的字段' COriginal_Data_Type_ID'和' CTask_Name'。
当我改变
unique_together = (('COriginal_Data_Type_ID', 'CTask_Name'),)
进入
unique_together = (('coriginal_data_type ', 'ctask_name'),)
然后是的,没关系,但这是正确的方法吗?似乎下面的代码与我的DDL有不同的模式...我定义的原始外键是数据类型的id,而不是数据类型本身。
我在这里做错了吗?那里的 COriginal_Data_Type_ID 字段和 CTask_Name 字段在哪里?
答案 0 :(得分:0)
好的,感谢knbk和django dev的回答是的,这是django的错误,这里有一个错误修复代码:
您可以下载此文件并覆盖:
中的inspectdb.py文件C:\ Python27 \ LIB \站点包\ django的\芯\管理\命令