Django Admin -> 更改字段顺序,包括内联字段

Posted

技术标签:

【中文标题】Django Admin -> 更改字段顺序,包括内联字段【英文标题】:Django Admin -> Change Order of Fields, including Inline Fields 【发布时间】:2010-11-15 11:21:02 【问题描述】:

我有一个“人”模型,它与其他模型具有一对多的关系,例如地址。我想在与 Person 相同的页面上编辑这些模型,我已经可以通过内联来完成。但我也想更改字段的顺序。

我希望(内联)字段“地址”成为列表中的第三项, 但是对于

字段('first_name'、'last_name'、'Adress_Inline'、'nationality'等) 我明白了: PersonAdmin.fields' 指的是表单中缺少的字段“Address_Inline”。

有没有办法改变字段的顺序并在“常规”模型字段之间获得某些内联字段?

谢谢!

【问题讨论】:

【参考方案1】:

用户 django 字段集定义视图的字段顺序和添加/编辑对象视图。

class YourCustomClass(admin.ModelAdmin):

    models = Your_Model
    fieldsets = ((None, 'fields': ('image', 'name',)),)

    add_fieldsets = ((None, 'fields': ('name', 'image',)),)

【讨论】:

【参考方案2】:

每当 Django 呈现管理表单模板时,内联字段列表在变量中可用 inline_admin_formset ,您可以使用它在您自己的自定义 change_form.html 模板中的任何位置显示内联字段。

您必须扩展 change_form.html 模板才能做到这一点,没有其他办法。

【讨论】:

【参考方案3】:

你可以用 javascript 做到这一点。您需要覆盖模板并可能添加一些 div 标签。然后对要复制的 div 进行硬编码,然后隐藏原始 div(使用内联)。 我希望这会有所帮助。

【讨论】:

【参考方案4】:

您必须手动扩展管理模板 (change_form.html) 并将位置硬编码到其中。 AFAIK,您不能将内联表单集插入父表单的中间。

【讨论】:

以上是关于Django Admin -> 更改字段顺序,包括内联字段的主要内容,如果未能解决你的问题,请参考以下文章

在 django admin 中更改字段名称

在 Django admin 中更改日期字段的默认小部件

如何更改 Django Admin 自定义列表字段标签

更改列表页面上的 django admin 附加字段

您可以更改 Django Admin 应用程序中的字段标签吗?

如何在 Django Admin 中更改 OneToOne 模型字段默认消息?