0

我有以下问题:

我在一个具有主数据库的 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

4

0 回答 0