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

标签 django django-south

我已经有模型了

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

我有很多条目。现在我想在其中添加一个字段,即
user = models.OneToOneField( User )

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

最佳答案

我会使用这种模式:

  • 将“user = models.OneToOneField(User, null=True)”添加到您的模型中(不要删除“名称”字段)
  • 运行“manage.py schemamigration --auto”。并应用迁移。现在您的表中有两列。
  • 现在创建一个数据迁移。编辑文件:您需要遍历模型中的所有对象并设置用户字段。
  • 从 model.py 文件中删除“name=models.CharField”。并从用户字段中删除 null=True。
  • 运行“manage.py schemamigration --auto”。并应用迁移

  • 顺便说一句,如果您使用 OneToOneField() 而不使用 null=True,您可以在该字段上设置 primary_key=True,因为它必须是唯一的。但我不知道南是否可以处理这种迁移。

    关于django - 如何通过南迁移在现有模型中添加一对一的关系字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8586703/

    相关文章:

    python - DoesNotExist 在/accounts/register/站点匹配查询不存在。 ( Django , python )

    Django查询集匹配所有相关对象

    django - Django 1.10 还需要 South 来管理迁移吗?

    python - 运行 Django 单元测试会导致南迁移重复表

    python - Django South 迁移历史导致完整性错误

    python - 如果我只想在我的条目下面有一个简单的评论框,我应该使用 Django 的评论框架还是自己编写?

    python - Django Docker 应用程序容器运行后无法在浏览器上打开

    python - Macports 和 virtualenv 站点包 后备

    django - 南0.8.3升级导致DeserializationError

    python - Django/South "python manage.py migrate CaseReport"引发异常