gpt4 book ai didi

python - 在 Django 中,当我运行 migrate 时,出现错误 : accounts_userinfo. user_id may not be NULL

转载 作者:行者123 更新时间:2023-12-01 03:52:06 24 4
gpt4 key购买 nike

每当我运行 python manage.py 迁移帐户时,我都会收到错误代码:django.db.utils.IntegrityError:accounts_userinfo.user_id may not be 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),并且 Django 无法猜测。另一种选择是删除 UsersUserInfo 表中的所有条目(假设数据不在生产中),然后进行迁移。

如果您只是想让它工作,您可以将默认值设置为现有用户模型之一,然后进入 Django 管理面板并更正条目。这样做的问题是您必须指定一个 ID(即 1),该 ID 可能不存在于其他数据库中。但同样,如果这仍在开发中并且没有迁移任何实际数据,那么就没有问题。

最后一个选项是首先将其设置为可为空,然后进入数据,为所有内容创建条目,然后创建另一个迁移以删除可为空属性。

关于python - 在 Django 中,当我运行 migrate 时,出现错误 : accounts_userinfo. user_id may not be NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38062709/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com