Как добавить поле со значением по умолчанию, не вызывая полной перезаписи таблицы?

Я хочу добавить новое поле в существующую модель

текущая модель

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

Вернуться на верх