我在现有设计中添加了一个新模型来处理新要求。要进行迁移,现有数据需要默认值以跟上新模型设计的步伐。如何将一个空对象分配为默认值。
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 。
答案 0 :(得分:1)
要保持现有对象不变,可以设置null = True
newfield = models.OneToOneField(NewModel, on_delete=models.CASCADE, null=True )
,当迁移成功运行时,您可以删除 null 属性,该属性将使 newfield 不可为空,然后再次运行迁移。之后,您将始终必须为新的 TheExistingModel 对象
分配一个值。