Как добавить поле со значением по умолчанию, не вызывая полной перезаписи таблицы?
Я хочу добавить новое поле в существующую модель
текущая модель
class InfoModel(models.Model):
id = models.UUIDField(default=uuid.uuid4)
Новая модель
где я хочу добавить новое поле count
class InfoModel(models.Model):
id = models.UUIDField(default=uuid.uuid4)
count = models.IntegerField(default=0)
эта модель создает следующий файл миграции
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('info', '0001_auto_20220303_1048'),
]
operations = [
migrations.AddField(
model_name='infomodel',
name='count',
field=models.IntegerField(default=0),
),
]
но если я мигрирую, используя вышеуказанный файл миграции, это вызовет полную перезапись таблицы для существующих строк. как я могу избежать этого?
Я попробовал предложение из документации https://docs.djangoproject.com/en/4.0/ref/migration-operations/#addfield не уверен, правильно ли я сделал, создав 2 файла миграции, потому что после второй миграции он все еще заполняет значение по умолчанию для существующих строк. Я хочу, чтобы только новые записи в модели имели значение по умолчанию, существующие строки не нужны.
добавить null=True или присвоить значение существующим экземплярам InfoModel