如何在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描述的机制编译的。