django - 由于 models.DO_NOTHING,FOREIGN KEY 约束失败

标签 django python-3.x django-2.0

我有这个 models.py 的代码片段

class Provider(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING)
    provider = models.CharField(max_length=100, unique=True)
    active = models.BooleanField(default=True)

每当我尝试删除一个对象时,我都会遇到一个错误:

django.db.utils.IntegrityError: FOREIGN KEY constraint failed

我在 django 2.x 上遇到了这个问题,因为在 1.11 上一切都很完美。 我做了一些搜索,发现这个问题可能是由这部分on_delete=models.DO_NOTHING发生的,那么我怎样才能在保持一切原样的情况下修复它呢?

最佳答案

基本上,你是在告诉 Django 在删除用户时不执行任何操作。因此,您将尝试删除具有相关外键的行,这是预期的行为。 如果您想在用户被删除时保留提供者模型,则必须使用户可为空并使用 models.SET_NULL。 如果提供者在你的逻辑中没有意义,你可以级联。 如果您需要重新分配给默认用户,您可以使用自定义方法。

关于django - 由于 models.DO_NOTHING,FOREIGN KEY 约束失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56662150/

相关文章:

python - Django 无法连接到 MySQL 服务器

python - 每个应用程序的 django 模板名称应该是唯一的吗?

python - for 循环存储旧变量值?

python - 仅使用 pathlib 规范化不存在的路径

django - path() 和 re_path() 有什么区别?

python - 如何在Django2网址中以斜线传递参数

collectstatic 时 Django gettext 错误

python - Django 自定义保存模型

python - 文件包含\u00c2\u00a0,转换为字符

python - 导入错误 : No module named 'django.core.urlresolvers'