我在django中有一个模型继承,如下所示:
class A(models.Model):
name = models.CharField (max_length = 255, unique = True)
class B(A):
desc = models.CharField (max_length = 255)
当在B上执行删除时,它会留下"垃圾"落后于A。
obj = B.objects.create(name = "My", desc = "left overs")
obj.delete()
现在我无法将模型改为t 1to1 FK而不是继承,因为它是一个已经运行的软件。 有没有什么好方法可以正确删除?
提前谢谢!
答案 0 :(得分:0)
不幸的是,在这种情况下,你拥有的是两张表,彼此没有关系。
继承并不意味着FK关系;它只是意味着,非常字面意思:
从继承的表中复制所有列定义,所以我没有 必须再写一次
继承仍会创建原始表,除非您将abstract = True
传递给父模型。
要永久解决此问题,您需要执行数据库迁移,然后[a]删除表 A
,并将abstract = True
添加到其定义或[ b]创建一个合适的外键关系。
目前,你可以做的是找到所有 A
的 B
并删除那些 for obj in A.objects.all():
if not obj.b_set.all():
obj.delete()
。不幸的是,没有诀窍,你必须以非常低效的方式做到这一点:
orderDetailsArray