如何添加具有默认值的字段,而不触发表的完全重写



我想在现有模型中添加新字段

当前型号

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个迁移文件,因为在第二次迁移之后,它仍然在填充现有行的默认值。我只希望模型中的新条目应该具有默认值,而不需要现有的行。

add null=True或为InfoModel 的现有实例赋值

最新更新