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

时间:2017-08-08 14:09:07

标签: 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?如果我使用foreign_key和DELETE_CASCADE一切都很好,但不使用派生模型。

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

使用dbshel​​l并删除B对象时一切都很好。 B类的基础对象也被删除(在这种情况下为A)。

Django没有在数据库级别放置DELETE CASCADE。如果使用sql删除模型B对象,则对象仍保留在数据库中。

相当可怜

答案 2 :(得分:0)

MaxM的信息。我想要以下数据库约束。 Django没有创建这个

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

它只能模拟这种行为。您的建议只允许我控制A_ptr_id

的名称