Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 为什么可以';是否删除具有相关对象的模型实例?_Sql_Django_Django Models - Fatal编程技术网

Sql 为什么可以';是否删除具有相关对象的模型实例?

Sql 为什么可以';是否删除具有相关对象的模型实例?,sql,django,django-models,Sql,Django,Django Models,我试图删除Django应用程序中的用户对象,但在删除用户时,我在相关对象中不断获得整数错误。相关对象如下所示: class Unfollowing(models.Model): source = models.ForeignKey(User, related_name='unfollowings_by') target = models.ForeignKey(User, related_name='unfollowings_of') created_on = models

我试图删除Django应用程序中的
用户
对象,但在删除
用户
时,我在相关对象中不断获得
整数错误。相关对象如下所示:

class Unfollowing(models.Model):
    source = models.ForeignKey(User, related_name='unfollowings_by')
    target = models.ForeignKey(User, related_name='unfollowings_of')
    created_on = models.DateTimeField(auto_now_add=True)
但是,当删除
用户时,会出现如下错误:

IntegrityError:表“auth_user”上的更新或删除违反了表“core_unfollowing”上的外键约束“source_id_refs_id_5b69e09fc6161c2a”
详细信息:键(id)=(6439)仍然从表“core_unfollowing”中引用


怎么回事?当关联的
用户
被删除时,是否应该自动删除相关的
取消跟踪的
对象?值得一提的是,我在_delete=models.CASCADE
上添加了一个显式的
,用于
Unfollowing.source
Unfollowing.target
(即使这是默认设置),但仍然出现了相同的错误。

这确实很奇怪。以下是我想尝试的几件事:

首先,您是否在添加了_delete=models.CASCADE上的
之后更新了数据库架构?。如果没有,那就没有任何效果。您可以通过直接转储数据库模式(而不是从Django中找出它)来仔细检查DELETE CASCADE上的
是否激活了

在我看来,这更像是一个与数据库引擎相关的错误,而不是Django的错误。如果您100%肯定在auth_user表和相关表中激活了DELETE CASCADE
,那么您可以尝试直接从sql客户端删除用户。如果它可以工作,并且同一个用户从Django(或者一个类似的用户,因为您删除了第一个用户)那里给您带来麻烦,那么尝试转储Django正在执行的SQL查询,并从SQL客户端重复它

这是我将采取的方法。此外,请检查这是否发生在特定用户或每个用户身上,并在以下表格中检查挂起的引用。也许还有一张你曾经拥有的旧桌子,那就是给你带来问题的那张

我将直接把研究重点放在数据库和sql客户机上,在我设法使它在那里工作之后,再回到Django

这是我将遵循的路径,而不是答案,因为这似乎是一个非常具体的问题

我希望这会有点帮助


祝你好运

您不是偶然使用了代理模型(和较旧的Django)@karthikr:
on_delete
是模型字段的参数:@TimmyO'Mahony:Nope,不是代理模型。或者(推测性地)可能与
用户
模型有两个FK有关,而
on_delete
不能同时跟随
相关的
s?@TimmyO'Mahony:我也这么认为,但是通过
user.unfollowings_by.all().delete()显式删除相关模型;user.unfollowings_of.all().delete();user.delete()
导致了类似的错误。