2015-11-03 61 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 
相关问题