在这种情况下有什么聪明的方法来执行删除吗?
class Bus(models.Model):
wheel = OneToOneField(Wheel)
class Bike(models.Model):
wheel = OneToOneField(Wheel)
pedal = OneToOneField(Pedal)
class Car(models.Model):
wheel = OneToOneField(Wheel)
class Wheel(models.Model):
somfields
car = Car()
wheel = Wheel()
wheel.save()
car.wheel = wheel
car.save()
car.delete() # I want to delete also wheel (and also all stuff pointing via OneToOneField eg pedal)
我是否需要覆盖汽车、自行车、巴士模型的删除方法,或者是否有更好的方法?其他选择是创建田野汽车、自行车、公共汽车轮模型,但这没有多大意义。
事情是这样的,因为Car
链接到Wheel
,它是关系中的依赖模型。因此,当您删除一个Wheel
,它删除所有依赖模型(包括相关的Car
行)。但是当你删除一个Car
, since Wheel
不依赖于Car
,它不会被删除。
为了删除Django中的父关系,可以覆盖Car
's delete
method:
class Car(models.Model):
# ...
def delete(self, *args, **kwargs):
self.wheel.delete()
return super(self.__class__, self).delete(*args, **kwargs)
然后在做的时候:
Car.objects.get(...).delete()
还将删除Wheel
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)