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_1
。basedb_child
,CONSTRAINTbasedb_child_parent_id_d6f3ee55_fk_basedb_parent_id
外键(parent_id
)参考{{ 1}}(basedb_parent
)
尽管在Python代码中运行id
,但确实删除了父行和子行。我知道这实际上是在底层MySQL数据库中发生的,因为p.delete()
表属性增加了(因此Django中的任何奇特的缓存都不会对其进行快捷操作)。
为什么我的AUTO_INCREMENT
查询不起作用,而DELETE FROM
却有效?