【发布时间】:2017-03-21 21:49:09
【问题描述】:
我正在使用自定义用户模型构建一个 django 网络应用程序。在注册过程结束时,当我提交表单时出现完整性错误。
这是错误:
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 模型以实现能够存储用户先前完成的作业的字段时才开始发生。 thisstackoverflow 问题中提供了更多详细信息。
为什么会出现完整性错误,我该如何解决?
【问题讨论】:
-
您是否在删除 job_history 字段后运行了 makemigrations 和 migrate?
-
是的,当我这样做时只会说:
No changes detected@GagikSukiasyan -
请尝试运行 makemigration,然后为您的应用迁移,最好从
manage.py migrate sites开始,然后是manage.py migrate auth -
这是两者的输出:
python manage.py migrate sites --> CommandError: App 'sites' does not have migrations.和python manage.py migrate auth --> Operations to perform: Apply all migrations: auth Running migrations: No migrations to apply.@GagikSukiasyan -
我在答案字段中输入,假的初始迁移应该在这种情况下有所帮助。如果它没有帮助转到您的数据库并从数据库中删除该列,它应该会有所帮助
标签: python django django-models django-authentication django-users