django orm删除从另一个模型派生的对象

django orm删除从另一个模型派生的对象,django,django-models,Django,Django Models,我有以下问题: class A (models.Model): name = models.CharField(max_length=80, default="") class B(A): another_name = models.CharField(max_length=80, default="") 如果删除了B,如何能够自动删除A?如果我使用外键和DELETE\u CASCADE,一切都可以,但使用派生模型则不行。基本上,可以为模型B编写自己的DELETE()方法来删除模

我有以下问题:

class A (models.Model):
   name = models.CharField(max_length=80, default="")

class B(A):
   another_name = models.CharField(max_length=80, default="")

如果删除了B,如何能够自动删除A?如果我使用外键和DELETE\u CASCADE,一切都可以,但使用派生模型则不行。

基本上,可以为模型B编写自己的DELETE()方法来删除模型a中的对象。
但是,如果没有ForeignKey,您应该如何决定/知道哪个对象A必须与特定对象B的删除级联?

使用dbshell和删除B对象时,一切都很好。类B的基本对象也会被删除(在这种情况下是A)

Django不会将删除级联放在数据库级别。如果使用sql A删除模型B对象,则对象将保留在数据库中


给MaxM的信息太少了。我需要以下数据库约束。Django不创建此

ALTER TABLE B
    ADD CONSTRAINT B_A_fkey FOREIGN KEY (A_ptr_id)
        REFERENCES A (id)
        ON UPDATE CASCADE ON DELETE CASCADE;

它只模仿这种行为。您的建议仅允许我在使用django删除基本对象时控制
A_ptr\u id

的名称。只是不在sql级别。Django ORM没有在数据库中设置DELETE CASCADE,我真的不明白。你说-如果我错了,请纠正我-如果使用django删除模型的对象,它将不会从数据库中删除?或者您只是指继承模型上的级联删除?我的意思是从数据库中删除继承模型。如果使用django(或管理员)删除它,则基本对象将被删除。如果使用纯SQL,则不会删除基本对象(在这种情况下为A)。模型A的对象无论如何都不会链接到模型B。当B型消失时,为什么要删除其中任何一个?如果你想把它们联系起来,你必须在它们之间建立联系。然后是这两个模型的对象之间的关系,而不是“整个”模型B和单个模型A对象之间的关系。您已经说过使用ForeignKey一切都很好-您不使用外键的动机是什么?B是从a派生的。如果您查看创建的表,您会发现如何确定a的哪个对象连接到B的哪个对象B的数据库对象有指向a的对象的指针,为什么不编写自定义删除方法。这将是一个非常简单的解决方案我在使用纯SQL删除条目时遇到了问题。在表定义(SQL)中缺少删除级联约束。请不要编写普通SQL,而是使用orm