In Django, when I run migrate I get the error : accounts_userinfo.user_id may not be NULL
In Django, when I run migrate I get the error : accounts_userinfo.user_id may not be NULL
每当我 运行 python manage.py 迁移帐户时,我都会收到错误代码:django.db.utils.IntegrityError:accounts_userinfo.user_id 可能不是 NULL
我相信这是由于我将模型与更多用户信息链接到 django 用户模型造成的。
这是我的 models.py
class UserInfo(models.Model):
c_name = models.CharField(max_length=120)
c_site = models.CharField(max_length=120)
link = models.ForeignKey(User)
有人看到我可能遗漏的明显问题吗?
让我知道您是否需要更多代码。
非常感谢。
-拉姆齐
外键默认不能为空。您要么需要使其可为空:
class UserInfo(models.Model):
c_name = models.CharField(max_length=120)
c_site = models.CharField(max_length=120)
link = models.ForeignKey(User, null = True)
或设置默认值:
class UserInfo(models.Model):
c_name = models.CharField(max_length=120)
c_site = models.CharField(max_length=120)
link = models.ForeignKey(User, default = some_id)
这取决于是否需要 link
。看来这很可能是必需的。
发生这种情况是因为数据库中存在没有该字段值的现有数据 (link
),并且 Django 无法猜测。另一种选择是删除 Users
和 UserInfo
表中的所有条目(假设数据未在生产中),然后迁移。
如果您只是想让它工作,您可以将默认值设置为现有用户模型之一,然后进入 Django 管理面板并更正条目.这样做的问题是您必须指定一个可能不存在于其他数据库中的 ID(即 1
)。但同样,如果这仍在开发中并且没有实际数据正在迁移,那么你没问题。
最后一个选项是首先将其设置为可空属性,然后进入数据,为所有内容创建条目,然后创建另一个迁移以删除可空属性。
每当我 运行 python manage.py 迁移帐户时,我都会收到错误代码:django.db.utils.IntegrityError:accounts_userinfo.user_id 可能不是 NULL
我相信这是由于我将模型与更多用户信息链接到 django 用户模型造成的。 这是我的 models.py
class UserInfo(models.Model):
c_name = models.CharField(max_length=120)
c_site = models.CharField(max_length=120)
link = models.ForeignKey(User)
有人看到我可能遗漏的明显问题吗? 让我知道您是否需要更多代码。 非常感谢。 -拉姆齐
外键默认不能为空。您要么需要使其可为空:
class UserInfo(models.Model):
c_name = models.CharField(max_length=120)
c_site = models.CharField(max_length=120)
link = models.ForeignKey(User, null = True)
或设置默认值:
class UserInfo(models.Model):
c_name = models.CharField(max_length=120)
c_site = models.CharField(max_length=120)
link = models.ForeignKey(User, default = some_id)
这取决于是否需要 link
。看来这很可能是必需的。
发生这种情况是因为数据库中存在没有该字段值的现有数据 (link
),并且 Django 无法猜测。另一种选择是删除 Users
和 UserInfo
表中的所有条目(假设数据未在生产中),然后迁移。
如果您只是想让它工作,您可以将默认值设置为现有用户模型之一,然后进入 Django 管理面板并更正条目.这样做的问题是您必须指定一个可能不存在于其他数据库中的 ID(即 1
)。但同样,如果这仍在开发中并且没有实际数据正在迁移,那么你没问题。
最后一个选项是首先将其设置为可空属性,然后进入数据,为所有内容创建条目,然后创建另一个迁移以删除可空属性。