2010-09-06 41 views
2

我在django開發中遇到了一個問題。其實我創建了一個模型,其中包括4個其他模型的外鍵。現在我在管理站點使用這些所有模型。問題是,當我刪除在主模型中使用foriegn鍵的記錄時,此刪除過程也會從我的主模型中刪除記錄。我要求,如果一個模型包含任何其他模型的外鍵,那麼如果我從admin中刪除這個外鍵模型記錄,那麼就不能從使用這個模型作爲外鍵的模型中刪除記錄。django:刪除django的DEL DELETE CASCADE行爲

任何一個可以有想法,我怎樣才能制止這種「ON DELETE CASCADE」

我將非常感謝全給你。 Regards

回答

4

覆蓋MyObj.delete()以遍歷所有要保留的鍵控關係,將它們的引用設置回您要刪除的對象爲null。然後,一旦所有關係都被解除,請致電super(MyObj, self).delete()

您可能必須更新數據庫(和模型定義)以允許您解除鎖定的那些密鑰爲null = True。

10

有一段時間有on_delete屬性,可以設置爲ForeignKey字段。 Django文檔示例:

user = models.ForeignKey(User, blank=True, null=True, on_delete=models.SET_NULL)