Как настроить модель в качестве значения по умолчанию для поля OneToOne в Django - PullRequest
0 голосов
/ 25 марта 2020

Я добавил новую модель в свой существующий дизайн, чтобы соответствовать новым требованиям. Для выполнения миграции существующие данные требуют значений по умолчанию, чтобы не отставать от новых дизайнов моделей. Как назначить пустой объект в качестве значения по умолчанию.

 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 голосов
/ 25 марта 2020

Чтобы сохранить существующие объекты без изменений, вы можете установить значение null = True

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

, и когда миграция будет успешно выполнена, вы можете удалить атрибут null , который сделает newfield не обнуляется, а затем снова запустите миграцию. После этого вам всегда нужно будет присвоить значение новому TheExistingModel object

...