运行 `migrate` 时 NOT NULL 约束失败
NOT NULL constraint failed when running `migrate`
我更改了我的 models.py 文件,当 运行 宁 migrate
我得到这个错误。 属性 是一个 OneToOneField()。我尝试添加 null=True
但这似乎无法解决问题。同样奇怪的是,即使我注释掉 属性 和 运行 makemigrations
后跟 migrate
,我仍然得到完全相同的错误。有没有办法来解决这个问题?我的模型如下所示:
class Estimator(Employee):
avg_estimate = models.IntegerField()
class Job(models.Model):
created = models.DateTimeField(auto_now_add=True)
estimator = models.OneToOneField(Estimator, null=True)
address = models.CharField(max_length=100)
completed = models.BooleanField(default=False)
我的猜测是您创建了一个没有 null=True 的迁移,它不会迁移,然后您创建了第二个带有 null=True 的迁移。
运行 "migrate" 将 运行 两个迁移按顺序进行,因此第一个迁移将再次失败。
假设是这样,那么
1:删除迁移文件夹中的两个最新文件。 (首先打开它们以确认它们正在按照我描述的那样创建迁移,然后再删除它们)。
2: 运行 makemigrations 再次,在你的 models.py
中使用 null=True
这应该创建与第二个迁移文件等效的文件,没有失败的中间迁移。
我更改了我的 models.py 文件,当 运行 宁 migrate
我得到这个错误。 属性 是一个 OneToOneField()。我尝试添加 null=True
但这似乎无法解决问题。同样奇怪的是,即使我注释掉 属性 和 运行 makemigrations
后跟 migrate
,我仍然得到完全相同的错误。有没有办法来解决这个问题?我的模型如下所示:
class Estimator(Employee):
avg_estimate = models.IntegerField()
class Job(models.Model):
created = models.DateTimeField(auto_now_add=True)
estimator = models.OneToOneField(Estimator, null=True)
address = models.CharField(max_length=100)
completed = models.BooleanField(default=False)
我的猜测是您创建了一个没有 null=True 的迁移,它不会迁移,然后您创建了第二个带有 null=True 的迁移。
运行 "migrate" 将 运行 两个迁移按顺序进行,因此第一个迁移将再次失败。
假设是这样,那么 1:删除迁移文件夹中的两个最新文件。 (首先打开它们以确认它们正在按照我描述的那样创建迁移,然后再删除它们)。 2: 运行 makemigrations 再次,在你的 models.py
中使用 null=True这应该创建与第二个迁移文件等效的文件,没有失败的中间迁移。