如何在Django管理界面中以表格格式显示添加的模型?

6 投票
3 回答
4038 浏览
提问于 2025-04-16 09:17

我刚开始学习Django,正在写我的第一个应用程序——一个家庭的家务管理工具。在教程中,它教你如何以表格的形式添加相关对象。不过我并不关心那些相关对象,我只想以表格的形式添加普通对象。这是我在admin.py中的内容:

from chores.models import Chore
from django.contrib import admin

class ChoreAdmin(admin.ModelAdmin):
    fieldsets = [ 
        (None,              {'fields': ['description', 'frequency', 'person']})
    ]   

admin.site.register(Chore, ChoreAdmin)

我希望当我点击“添加家务”时,不是看到:

Description: _____
Frequency: ______
Person: _____

而是看到:

Description: __________ | Frequency: _______ | Person: _____

这样做简单吗?还是需要花很多时间去定制?如果简单的话,我该怎么做呢?

谢谢!

3 个回答

0

据我所知,默认情况下没有现成的选项可以做到这一点,但你可以改变管理网站的CSS样式,或者针对每个模型修改 change_form.html 的布局。

你可以通过创建一个带有 Media 类的 ModelAdmin 子类,来让管理网站使用你自定义的CSS(针对每个模型)。然后你可以修改它(可能需要用到 body.change-form 这个CSS类),确保字段组是并排显示的。

你还可以在你的模板目录中创建一个名为 /admin/chores/chore/change_form.html 的模板。不幸的是,创建实际表单元素的部分并不在一个单独的块中,所以你需要用你自定义的内容覆盖 'content' 块,并且要复制很多 django/contrib/admin/templates/admin/change_form.html 文件的内容。

有关更多信息,请参考 相关文档

2

可以试试这个,

class ChoreAdmin(admin.ModelAdmin):
 list_display = ('description', 'frequency', 'person')
 list_editable = ('description', 'frequency', 'person') 

这样你就可以以表格的形式编辑你所有的条目了(如果我没理解错文档的话)...

6

楼主可能已经解决了问题,但对于新手用户来说,可以参考这个链接:https://docs.djangoproject.com/en/dev/ref/contrib/admin/

基本上,链接中的以下部分:


field_options 这个字典可以包含以下几个键:

fields:这是一个包含要在这个字段组中显示的字段名称的元组。这个键是必须的。

举个例子:

{
'fields': ('first_name', 'last_name', 'address', 'city', 'state'),
}

就像使用 fields 选项一样,如果想在同一行显示多个字段,可以把这些字段放在一个元组里。在这个例子中,first_namelast_name 字段会显示在同一行:

{
'fields': (('first_name', 'last_name'), 'address', 'city', 'state'),
}

撰写回答