如何在Django管理界面中以表格格式显示添加的模型?
我刚开始学习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 个回答
据我所知,默认情况下没有现成的选项可以做到这一点,但你可以改变管理网站的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
文件的内容。
有关更多信息,请参考 相关文档。
可以试试这个,
class ChoreAdmin(admin.ModelAdmin):
list_display = ('description', 'frequency', 'person')
list_editable = ('description', 'frequency', 'person')
这样你就可以以表格的形式编辑你所有的条目了(如果我没理解错文档的话)...
楼主可能已经解决了问题,但对于新手用户来说,可以参考这个链接:https://docs.djangoproject.com/en/dev/ref/contrib/admin/
基本上,链接中的以下部分:
field_options
这个字典可以包含以下几个键:
fields
:这是一个包含要在这个字段组中显示的字段名称的元组。这个键是必须的。
举个例子:
{
'fields': ('first_name', 'last_name', 'address', 'city', 'state'),
}
就像使用 fields
选项一样,如果想在同一行显示多个字段,可以把这些字段放在一个元组里。在这个例子中,first_name
和 last_name
字段会显示在同一行:
{
'fields': (('first_name', 'last_name'), 'address', 'city', 'state'),
}