我在 Django 中有以下类层次结构,使用多表继承:
class Vehicle(models.Model):
name = models.CharField(blank=True)
class Car(Vehicle):
color = models.CharField(blank=True)
当我使用多表继承时,在数据库级别,有两个数据库表,一个用于 Vehicle,另一个用于 Car。它们之间也存在 OneToOne 关系。
我的数据库中有一些 Car 对象。我想将这些对象转换为 Vehicle,并删除其中的“Car”部分。如果我执行 Car.objects.all(),我希望这些“前车”都不会出现。
要获取超类实例,我可以这样做:
car = Car()
vehicle = car.vehicle
但是如何在不删除“车辆”对象的情况下安全地删除“汽车”对象呢?
我找到了一些与向下转换相关的答案(从超类实例创建子类实例并将其存储在数据库中,请参阅:Django 模型继承:创建现有实例的子实例(向下转换)?),但我还没有找到答案然而关于这个案子。