我有这个 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/