用于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。 –