我有一个Django 1.6模型结构,其中实例共享一个公共模型实例作为子类。
在数据库术语中,A
行有B
行,C
行有parent_link
行。
在.delete()
上致电C'
时,A
和C
的行已删除,但B
有一个孤儿记录。直接实例化A
并调用delete会将删除级联到B
和C
实例。我怎样才能以最简单的方式确保删除B
或C
的实例将删除父级和兄弟级状态?
删除A的实例会导致删除B和C的链接实例。删除B会导致B和A删除。删除C会导致C和A删除。
如何删除任何A,B或C实例删除所有其他实例,而不管是否正在调用delete()实例?
作为旁注,所有实例似乎都被删除了,因此在.delete()
处调用C'
时,基本状态和B'
似乎被删除,但实际上是{B'
行。 1}}将保持不会出现在查询中,直到创建PK
对齐的另一个基本实例。在这种情况下,B'
会从死者身上重新出现。
这是课程:
class A(models.Model):
# Fields here
class B(A):
a_ptr = models.OneToOneField(A, parent_link=True)
# More fields
class C(A):
a_ptr = models.OneToOneField(A, parent_link=True)
# More fields
# Code
shared_state = A()
shared_state.save()
sharer_b = B(a_ptr=shared_state.id)
charer_c = C(a_ptr=shared_state.id)
sharer_b.save()
sharer_c.save()
# Objective, this should delete all rows for the above?
sharer_c.delete()