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

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

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

 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

django django-models django-orm
1个回答
0
投票

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

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

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

分配一个值。
© www.soinside.com 2019 - 2024. All rights reserved.