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

时间:2011-01-01 18:01:25

标签: python django

我刚刚开始使用Django编写我的第一个应用程序 - 为我的家人做一个家务活动经理。在本教程中,它将向您展示如何以表格形式add related objects。我不关心相关的对象,我只想以表格形式添加常规对象。这就是我在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 :(得分:6)

OP可能已全部设置,但对于阅读此内容的新用户,请参阅: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'),
}

答案 1 :(得分:2)

要尝试的东西,

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

这使您能够以表格形式编辑所有条目(如果我已正确阅读文档)...

答案 2 :(得分:0)

据我所知,没有默认的ModelAdmin选项,但您可以更改管理网站的CSS或修改每个模型的change_form.html布局。

您可以修改管理站点以使用您的自定义CSS(基于每个模型,通过将ModelAdmin继承为Media类)并对其进行修改(可能使用{{1 CSS类)并确保字段集彼此相邻。

您还可以在模板目录中创建名称为body.change-form的模板。不幸的是,创建实际表单元素的部分不在单独的块中,因此您应该使用自定义内容覆盖“/admin/chores/chore/change_form.html”块,复制大量content文件。

有关详细信息,请参阅relevent documentation