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

问题描述 投票:0回答:1

我已经有模型了,

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

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

user = models.OneToOneField( User )

如何将此字段添加到

ModelA
?除了删除所有以前的条目之外还有其他解决方案吗?

django django-south
1个回答
14
投票

我会使用这种模式:

  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
    。并应用迁移

顺便说一句,如果您使用

OneToOneField()
而不使用
null=True
,则可以在此字段上设置
primary_key=True
,因为它必须是唯一的。但我不知道南方能否应对这次迁移。

© www.soinside.com 2019 - 2024. All rights reserved.