2015-11-03 66 views
3

用於ForeignKey字段的Django admin呈現一個允許創建新實體的小「加號」鏈接。如何在django admin中啓用更改/刪除ForeignKey實體?

enter image description here

而且看起來它也能夠使變革鏈接/刪除ForeignKey的對象

https://github.com/django/django/blob/1.8/django/contrib/admin/templates/admin/related_widget_wrapper.html#L13

但是,沒有從文檔例子說明如何使此功能可用。有沒有文件記錄的選項?

+0

我使用Django 1.8.4。當我與supperuser登錄,我看到添加和編輯的聯繫,但刪除是invisble。 –

回答

1

答案在於BaseModelAdmin類和RelatedFieldWidgetWrapper類的代碼。

BaseModelAdmin中,首先確保用戶有權添加,更改或刪除相關模型的對象。

RelatedFieldWidgetWrapper中,要更改或刪除相關對象,還要確保該關係不是多對多。此外,如果爲此關係啓用級聯刪除,則無法刪除相關對象。

默認的權限是真的,我猜你會知道如果你改變了他們嗎?如果確實沒有,那麼您無法更改相關對象的原因可能是您覆蓋了管理模型中的readonly_fields屬性或get_readonly_fields方法。

一旦你看到更改按鈕,你可能還沒有看到刪除按鈕,因爲級聯是默認的。您可以通過在創建外鍵時設置on_delete屬性來更改此屬性。

+0

謝謝,我錯過了'on_delete'外鍵字段選項的需求。 – kmmbvnr

2

看看RelatedFieldWidgetWrapper__init__功能django/contrib/admin/widgets.py

self.can_delete_related = not multiple and not cascade and can_delete_related 
相關問題