用於ForeignKey字段的Django admin呈現一個允許創建新實體的小「加號」鏈接。如何在django admin中啓用更改/刪除ForeignKey實體?
而且看起來它也能夠使變革鏈接/刪除ForeignKey的對象
但是,沒有從文檔例子說明如何使此功能可用。有沒有文件記錄的選項?
用於ForeignKey字段的Django admin呈現一個允許創建新實體的小「加號」鏈接。如何在django admin中啓用更改/刪除ForeignKey實體?
而且看起來它也能夠使變革鏈接/刪除ForeignKey的對象
但是,沒有從文檔例子說明如何使此功能可用。有沒有文件記錄的選項?
答案在於BaseModelAdmin類和RelatedFieldWidgetWrapper類的代碼。
在BaseModelAdmin
中,首先確保用戶有權添加,更改或刪除相關模型的對象。
在RelatedFieldWidgetWrapper
中,要更改或刪除相關對象,還要確保該關係不是多對多。此外,如果爲此關係啓用級聯刪除,則無法刪除相關對象。
默認的權限是真的,我猜你會知道如果你改變了他們嗎?如果確實沒有,那麼您無法更改相關對象的原因可能是您覆蓋了管理模型中的readonly_fields
屬性或get_readonly_fields
方法。
一旦你看到更改按鈕,你可能還沒有看到刪除按鈕,因爲級聯是默認的。您可以通過在創建外鍵時設置on_delete
屬性來更改此屬性。
謝謝,我錯過了'on_delete'外鍵字段選項的需求。 – kmmbvnr
看看RelatedFieldWidgetWrapper
類__init__
功能django/contrib/admin/widgets.py
:
self.can_delete_related = not multiple and not cascade and can_delete_related
我使用Django 1.8.4。當我與supperuser登錄,我看到添加和編輯的聯繫,但刪除是invisble。 –