如何在Django管理界面中自定义列表数据视图?
我的如何在Django管理界面中自定义列表数据视图?,django,django-admin,Django,Django Admin,我的admin.py中有两个ModelAdmin,如下所示: class ProjectAdmin(admin.ModelAdmin): list_display = ('project_name', 'start_date', 'end_date') list_filter = ['end_date'] search_fields = ['project_name'] class TaskAdmin(admin.ModelAdmin): list_displa
admin.py中有两个ModelAdmin
,如下所示:
class ProjectAdmin(admin.ModelAdmin):
list_display = ('project_name', 'start_date', 'end_date')
list_filter = ['end_date']
search_fields = ['project_name']
class TaskAdmin(admin.ModelAdmin):
list_display = ('project', 'task_name', 'status', 'comment', 'deadline', 'last_updated')
list_filter = ['last_updated', 'deadline', 'status']
search_fields = ['project', 'task_name']
Project Name Task Name Deadline
# Project1 # Task 1 of Project1 # Task 1 Deadline
# Task 2 of project 1 # Deadline
# Task 3 of project 1 # Deadline
# Project 2 # Task 1 of project 2 # Deadline
and so on.
此列表列出了具有以下内容的项目:
Project Name Start_date End_date
# Data
但我想定制如下:
class ProjectAdmin(admin.ModelAdmin):
list_display = ('project_name', 'start_date', 'end_date')
list_filter = ['end_date']
search_fields = ['project_name']
class TaskAdmin(admin.ModelAdmin):
list_display = ('project', 'task_name', 'status', 'comment', 'deadline', 'last_updated')
list_filter = ['last_updated', 'deadline', 'status']
search_fields = ['project', 'task_name']
Project Name Task Name Deadline
# Project1 # Task 1 of Project1 # Task 1 Deadline
# Task 2 of project 1 # Deadline
# Task 3 of project 1 # Deadline
# Project 2 # Task 1 of project 2 # Deadline
and so on.
我该怎么做?文档中是否包含类似的内容?我进行了快速搜索,但找不到正确的指针继续
谢谢您必须构建自己的视图并将其添加到管理员。
也许管理员列表视图是一个很好的起点
如果这听起来工作太多,我可以想象三种解决方法:
为每个任务和每个截止日期创建一个新列,并在其中添加任务和dealine,如“task_taskname”等。当然,如果每个项目中有两个或三个任务,这将是太多的信息
颠倒你的逻辑!不要为项目创建列表视图,而是为任务创建列表视图!您仍然可以将项目名称添加到此列表中。事实上,这是您当前的TaskAdmin
使用模型函数为任务名称和截止日期生成条目。另外,给出一个简短的描述,如get\u all\u tasks.short\u description='Task Name'
。那就应该成功了李>
有趣的是,你的问题可能在我的大脑中触发了一些东西,我为自己的项目做了一些非常相似的事情。
您可以通过定义提供内容的函数来解决问题(请参见上面的我的选项3):
class ProjectAdmin(admin.ModelAdmin):
列表显示=(“项目名称”、“项目任务”、“任务截止日期”、“结束日期”)
列表过滤器=['结束日期']
搜索字段=['project\u name']
def项目任务(自身、实例):
out=“”
对于实例.task_set.all()中的任务:
#生成html输出
out+=“{0}
”。格式(task.taskname)
返回
project_tasks.allow_tags=True#html应按原样呈现
project_tasks.short_description=“任务名称”
#截止日期相同
那就应该成功了
谢谢你,伙计。我会试试的。我刚刚添加了一张显示我的应用程序的图片。第二个和第三个COLLAM中的所有数据都是使用aove描述的机制编译的。