【问题标题】:How to change the layout and fields disposition of Django's Admin forms?如何更改 Django 管理表单的布局和字段配置?
【发布时间】:2016-10-20 09:11:53
【问题描述】:

我有一个Student 的简单模型,它通过admin.ModelAdmin 注册到管理员。

此模型的管理员更改表单如下所示:

我想稍微改变一下这个表单的布局,这样几个字段就可以在同一行,就像这样(在 Paint 中编辑):

在不覆盖默认模板的情况下我可以做些什么吗?如果没有,最好的方法是什么?

提前致谢。

【问题讨论】:

    标签: django django-models django-admin


    【解决方案1】:

    您可以像这样在ModelAdmin 中使用fields 属性:

    @admin.register(Student)
    class StudentAdmin(admin.ModelAdmin):
    
        fields = (
            ('no_student', 'last_name', 'first_name),
            'course',
            'sex',
            'id'
        )
    

    分组在一个子元组或子列表中的字段将显示在一行中。您可以创建多个这样的组。

    【讨论】:

    • 与萨加尔的回答有何不同?
    • 在该示例中使用 fieldsets 是多余的,您可以使用 fields 代替。
    【解决方案2】:

    您可以通过使用字段集来做到这一点。

    class StudentAdmin(admin.ModelAdmin):
        fieldsets = (
            (None, {
                'fields': (('no_student', 'last_name', 'first_name), 'course', 'sex', 'ID')
            }),
            ...
    )
    

    请注意,我已将应以单行显示的字段包装在同一元组中。

    Reference

    【讨论】: