由于模型原因,FOREIGN KEY约束失败.DO_NOTHING

时间:2019-06-19 07:21:54

标签: django python-3.x django-2.0

我有这个用于model.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约束失败

我在django 2.x上遇到了这个问题,因为在1.11上所有事情都是完美的。 我进行了一些搜索,发现此问题可能on_delete=models.DO_NOTHING部分发生了,那么如何解决所有问题呢?

1 个答案:

答案 0 :(得分:1)

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