【发布时间】:2018-07-27 16:38:45
【问题描述】:
我有一个模拟 xml 应答器的行为和树状结构的应用程序。
我的第一个模型 IdBalise 用于将父母与孩子联系起来。它通过 GenericForeignKey 与不同的应答器模型链接:
class IdBalise(models.Model):
idBalise=models.AutoField(primary_key=True)
parent = models.ForeignKey('IdBalise', on_delete=models.CASCADE, related_name="parentbal", null=True, blank=True)
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
object_id = models.PositiveIntegerField()
content_object = GenericForeignKey('content_type', 'object_id')
我使用了许多应答器模型,如下所示:
class BiblBalise(Balise):
idbal = GenericRelation(IdBalise, content_type_field="content_type", object_id_field="object_id", on_delete=models.CASCADE)
baliseName='bibl'
为了在我删除一个IdBalise时删除应答器的内容,我重写了IdBalise的delete方法:
def delete(self):
self.content_object.delete()
super(IdBalise, self).delete()
完美运行。当我删除 IdBalise 时,它的相关内容(例如 BiblBalise 中的条目)会被删除。
我的问题是,当我删除父级时,子级的内容不会删除。由于“父”字段上的 on_delete=models.CASCADE ,子 IdBalise 被删除。但它们的内容(例如 BiblBalise 中的条目)并没有被删除。
为什么当孩子 IdBalise 被删除时我的覆盖删除方法不起作用?有什么想法吗?
谢谢
【问题讨论】:
标签: django django-models