在這種情況下如何執行刪除有一些聰明的方法嗎?通過OneToOneField刪除相關對象
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)
我需要覆蓋汽車,自行車,公交車模型的DELETE方法或者是有一些更好的辦法?其他選擇是在Wheel模型上創建汽車,自行車,公共汽車等領域,但沒有多大意義。
問題的首要'刪除(),它不會被稱爲'方法是,如果你做批量刪除操作,因爲它不會被調用'Car.objects.filter()。delete()' – Rohan
@Rhan你是對的。對於批量刪除操作aka。由Django文檔建議的查詢集 - https://docs.djangoproject.com/en/dev/ref/models/querysets/#django.db.models.query.QuerySet.delete使用django信號'post_delete'裝飾器。 –
@Rohan對於上面的django文檔鏈接,具體摘錄 - >> delete()方法執行批量刪除,並且不會調用模型上的任何delete()方法。但是,它會爲所有已刪除的對象(包括級聯刪除)發出pre_delete和post_delete信號。 –