django - 运行 `migrate` 时 NOT NULL 约束失败

标签 django django-migrations

我更改了我的 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

这应该创建相当于第二个迁移文件,没有失败的中间迁移。

关于django - 运行 `migrate` 时 NOT NULL 约束失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30181638/

相关文章:

python - 带有 docker 的 Django 不运行自定义应用程序的迁移

django - 将参数传递给 Django as_view 函数

Django 和 celery : admin task list does not display values

python - 如何设置应保存在数据库中的日期时间选择器的默认时间

Django 1.6b gis导入错误

带有 CORS 转储数据的 Django 1.9 : "corsheaders_corsmodel" does not exist

python - 如果 AddField 引用 "--fake-initial"列,则使用 "same"的 Django 迁移不起作用

django - 从 auth.User 迁移到自定义用户模型。组和权限始终为空

python - django.db.utils.ProgrammingError : syntax error at or near "WITH ORDINALITY" LINE 6:

python - Django模型更新或创建具有唯一约束的对象