Django Admin ForeignKey字段小部件选项和不一致的默认值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django Admin ForeignKey字段小部件选项和不一致的默认值相关的知识,希望对你有一定的参考价值。

我有一个具有外键的模型,在管理员中,这些FK呈现为下拉列表。但是,其中一些显示相关表中元素的“添加”,“编辑”和“删除”按钮,而其他则不显示。我无法弄清楚这些字段之间的区别是什么,有些呈现单向,有些呈现不同的方式。

我的理想情况是这些按钮不会呈现任何外键,编辑一个模型仅限于该实体本身的更改。

我看到Django最终为这些领域选择了RelatedFieldWidgetWrapper。我可以在这个小部件上设置can_add_relatedcan_change_relatedcan_delete_related,但我不知道如何轻松地将这些作为这些字段的选项传递,以便它们都是一致的。

如何管理在管理员中打开和关闭这些选项?

答案

在管理员中新建一个员工用户(不是超级用户),假设模型A有外键名为模型B,分配模型A的添加/更改/删除权限并为该用户添加模型B的权限,使用该用户登录管理员,您可以和只能在管理面板或RelatedFieldWidgetWrapper中添加模型B.因为can_xxx_related在管理员中由cal烫平:

                wrapper_kwargs.update(
                    can_add_related=related_modeladmin.has_add_permission(request),
                    can_change_related=related_modeladmin.has_change_permission(request),
                    can_delete_related=related_modeladmin.has_delete_permission(request),
                )

djangocontribadminoptions.pyline 162中的代码

以上是关于Django Admin ForeignKey字段小部件选项和不一致的默认值的主要内容,如果未能解决你的问题,请参考以下文章

django admin中的ForeignKey字段

添加/更改表单中的ForeignKey字段 - Django admin

如何在Django Admin中过滤foreignkey字段的查询集

如何在 Django Admin 中更改 ForeignKey 显示文本?

Django Admin ForeignKey字段小部件选项和不一致的默认值

Django admin:将必填字段设为只读