为什么我得到完整性错误django?

时间:2017-03-21 21:49:10

标签: python django django-models django-authentication django-users

我正在使用自定义用户模型构建django Web应用程序。在我提交表单的注册过程结束时,会发生完整性错误。

这是错误:

Exception Type: IntegrityError
Exception Value: NOT NULL constraint failed: accounts_user.job_history_id

此错误表示名为job_history的自定义用户模型中的字段不能为空。然而,这样的领域甚至不存在。

这是我的自定义用户模型:

class User(AbstractBaseUser, PermissionsMixin):
    email = models.EmailField(unique=True)
    username = models.CharField(max_length=40, unique=True)
    avatar = models.ImageField(blank=True, null=True)
    date_joined = models.DateTimeField(default=timezone.now)
    is_active = models.BooleanField(default=True)
    is_staff = models.BooleanField(default=False)

    objects = UserManager()

    USERNAME_FIELD = "email"
    REQUIRED_FIELDS = ["username", "password"]

    def __str__(self):
        return "@{}".format(self.username)

    def get_short_name(self):
        return self.username

我不知道这个错误是指什么以及它为什么会发生。我在之前的位置添加了名为job_history的字段,但之后将其删除并相应地更新了数据库。当我正在摆弄Job和User模型以便实现能够存储用户先前完成的作业的字段时,才会出现此错误。有关详细信息,请参阅this stackoverflow问题。

为什么会出现完整性错误以及如何解决?

1 个答案:

答案 0 :(得分:1)

错误表明您的job_history字段仍在数据库中,并且出于某种原因,您的迁移无效。所以你需要看看为什么你的迁移不起作用。您可以尝试进行虚假的初始迁移:

python manage.py makemigrations app_name
python manage.py migrate  --fake-initial

我很确定这应该会有所帮助,但是如果这也没有用,你总是可以直接进入你的数据库并从DB中删除job_history_id列