Django on_delete = CASCADE无法正常工作,无法使用原始SQL删除父行

时间:2018-06-22 08:03:38

标签: django django-models foreign-keys cascade

Django模型:

class Parent (Model):

    name = CharField (max_length = _MAX_NAME_LENGTH, unique = True)

class Child (Model):

    name = CharField (max_length = _MAX_NAME_LENGTH, unique = True)

    parent = ForeignKey (Parent, on_delete = CASCADE)

创建一些数据:

p = Parent (name='parentname')
p.save ()

c = Child (name='childname', parent=p)
c.save ()

删除父级,希望通过级联删除子级:

DELETE FROM `basedb_parent` WHERE `basedb_parent`.`id` = 1
  

#1451-无法删除或更新父行:外键约束失败(idat_prealpha_0_1basedb_child,CONSTRAINT basedb_child_parent_id_d6f3ee55_fk_basedb_parent_id外键(parent_id)参考{{ 1}}(basedb_parent

尽管在Python代码中运行id,但确实删除了父行和子行。我知道这实际上是在底层MySQL数据库中发生的,因为p.delete()表属性增加了(因此Django中的任何奇特的缓存都不会对其进行快捷操作)。

为什么我的AUTO_INCREMENT查询不起作用,而DELETE FROM却有效?

0 个答案:

没有答案