我有一個抽象類,它具有用於我所有模型的一些常用方法。我在所有模型中都繼承了這個類。現在需要在模型刪除時發送郵件。所以我重寫了抽象類中的delete()方法。這導致相同方法的遞歸調用,因爲調用super方法。Django - 在基類中覆蓋模型的delete()方法 - 遞歸問題
super(Model, self).save(*args, **kwargs)
class Common(models.Model):
#mail logic
super(type(self), self).delete(*args, **kwargs)
class Child(Common)
# fields
最好使用django信號:'post_delete'或'pre_delete'。例如:可以說你的'Child'類具有:'Child.parent = ForeignKey(Parent)'。現在,如果刪除父項:'parent.delete()',那麼您的子項也將被刪除(級聯刪除行爲)。發生這種情況時,不會在Child對象上調用delete()方法,並且不會執行您的#mail邏輯。如果您要使用信號,一切都按預期工作。閱讀如何使用它們:http://docs.djangoproject.com/en/dev/topics/signals/ – Ski 2010-11-11 17:00:34
@Skirmantas這是個好主意。非常感謝。 – 2010-11-11 17:52:14