如何在Django中将模型设置为OneToOne字段的默认值

时间:2020-03-25 11:44:07

标签: django django-models django-orm

我在现有设计中添加了一个新模型来处理新要求。要进行迁移,现有数据需要默认值以跟上新模型设计的步伐。如何将一个空对象分配为默认值。

 class NewModel(models.Model):
     somedata = models.IntegerField(default=0)

 class TheExistingModel(models.Model):
     data1 = models.IntegerField(default=0)
     newfield = models.OneToOneField(NewModel, on_delete=models.CASCADE, default= "?" )

新字段将添加到现有模型中,它需要一个默认值,以便更新数据库中的现有数据。同样,在创建新的 TheExistingModel 实例时,必须创建相应的 NewModel

1 个答案:

答案 0 :(得分:1)

要保持现有对象不变,可以设置null = True

 newfield = models.OneToOneField(NewModel, on_delete=models.CASCADE, null=True )

,当迁移成功运行时,您可以删除 null 属性,该属性将使 newfield 不可为空,然后再次运行迁移。之后,您将始终必须为新的 TheExistingModel 对象

分配一个值。