我有以下问题:
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一切都很好,但不使用派生模型。
答案 0 :(得分:0)
基本上,可以为模型B编写自己的delete()方法,以删除对象表单模型A. 但是,如果没有ForeignKey,您应该如何决定/知道哪个对象与特定对象B的删除级联?
答案 1 :(得分:0)
使用dbshell并删除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