我有一个Django项目,它是作为遗留数据库的导入而开始的。因此,存在具有复合主键的模型。只要我只使用遗留数据,这就有效,但现在我想添加新数据,我创建的表单告诉我我正在尝试插入重复数据,大概是因为它只是查看其中一个字段作为主键。
现在我想更改模型以使用自动增量主键,就像Django会自动添加一样。我尝试从字段中删除主键属性,并将它们放在Meta内部类中的unique_together中。当我使用South运行schemamigration
时,它希望按预期添加id
字段,但它要求提供默认值。
如何指定South应以某种方式为自动增量字段分配唯一键? (即将序列[1 ... n]分配给记录的某些任意顺序)
如果这是不可能的,还有另一种方法可以完成同样的事情,最好是使用Django和South?
答案 0 :(得分:5)
我解决了要求我使用解决方法执行此操作的问题:
我使用INSERT INTO... SELECT...
将原始表中的数据复制到SQL中的临时表中。然后我删除了原始表并使用autoincrement字段重新创建它。然后我将数据复制回新表中,INSERT
命令自动添加自动增量值。最后,我执行了一次假移动的南迁移,以使South的表与新模式保持一致。