我有以下问题:
我在一个具有主数据库的 Django 应用程序上工作,现在我们正在添加一个辅助数据库,以便仅同步其中的一些数据。当我尝试运行迁移时,出现错误:“field_2”列中的空值违反了非空约束。这是问题所在:
该模型:
class A(models.Model):
field_1 = models.BooleanField(default=False)
field_2 = models.BooleanField(default=True) # added later
field_3 = models.BooleanField(default=True) # added later
和 4 次迁移(嗯,更多,但不算数):
0001 - 相关模型已创建
0002 - 创建模型 A 并创建关系 (ForeignKey)
0003 - field_2 添加到模型 A
0004 - field_3 添加到模型 A
但是,当我在新数据库上运行迁移时,迁移在迁移 0002 处停止,并出现上述错误:
django.db.utils.IntegrityError:“field_2”列中的空值违反非空约束
即使该字段是在以后的迁移中创建的。我什至不知道要开始解决此问题。
编辑:
迁移 0001:
class Migration(migrations.Migration):
initial = True
dependencies = []
operations = [
migrations.CreateModel(
name='B',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=100)),
('year', models.IntegerField()),
('active', models.BooleanField(default=True)),
],
)
]
迁移 0002:
class Migration(migrations.Migration):
dependencies = ['app', '0001']
operations = [
migrations.CreateModel(
name='A',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('field_1', models.BooleanField(default=False))
],
),
migrations.AddField(
model_name='b',
name='a',
field=models.OneToOneField(null=True, on_delete=django.db.models.deletion.SET_NULL, to='app.B'),
),
]
迁移 0003:
class Migration(migrations.Migration):
dependencies = ['app', '0002']
operations = [
migrations.AddField(
model_name='a',
name='field_2',
field=models.BooleanField(default=True),
),
]
迁移 0004:
class Migration(migrations.Migration):
dependencies = ['app', '0003']
operations = [
migrations.AddField(
model_name='a',
name='field_3',
field=models.BooleanField(default=True),
),
]
迁移:0001