如何通过南迁移在现有模型中添加一对一关系字段

时间:2011-12-21 08:09:38

标签: django django-south

我已经有了一个模特,

class ModelA( models.Model ):
    name = models.CharField ( max_length = 255, blank = False )

我有很多条目。现在我想在其中添加一个字段,即

user = models.OneToOneField( User )

如何将此字段添加到ModelA?除了删除所有以前的条目之外,还有其他解决方案吗?

1 个答案:

答案 0 :(得分:12)

我会使用这种模式:

  1. 将“user = models.OneToOneField(User,null = True)”添加到您的模型中(不要删除“名称”字段)
  2. 运行'manage.py schemamigration --auto'。并应用迁移。现在,您的表格中有两列。
  3. 现在创建一个数据迁移。编辑文件:您需要遍历模型中的所有对象并设置用户字段。
  4. 从model.py文件中删除“name = models.CharField”。并从用户字段中删除null = True。
  5. 运行'manage.py schemamigration --auto'。并应用迁移
  6. 顺便说一句,如果你使用不带null = True的OneToOneField(),你可以在这个字段上设置primary_key = True,因为它必须是唯一的。但我不知道南方是否可以处理这种迁移。