我有这个用于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
部分发生了,那么如何解决所有问题呢?
答案 0 :(得分:1)
基本上,您是在告诉Django删除用户时不执行任何操作。因此,您将尝试删除具有相关外键的行,这是预期的行为。 如果即使在删除用户后仍要保留提供者模型,则必须使用户可为空并使用models.SET_NULL。 如果提供者在您的逻辑上没有意义,则可以进行级联。 如果您需要重新分配给默认用户,则可以使用自定义方法。