我的ModelAdmin
中有两个admin.py
,如下所示:
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 Start_date End_date
# Data
但我想自定义看起来像这样:
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.
我该怎么做?文档中是否包含这样的内容?我做了一个快速搜索,但找不到正确的指针继续。
由于
答案 0 :(得分:1)
您必须构建自己的视图并将其添加到管理员。 也许admin list_view是一个很好的起点。
如果这听起来太多了,我可以想象三种解决方法:
get_all_tasks.short_description = 'Task Name'
之类的简短说明。那应该是诀窍!有趣的是,你的问题可能在我的大脑中触发了一些东西,我为自己的项目做了一些非常相似的事情。 您可以通过定义提供内容的功能来解决您的问题(请参阅上面的选项3.):
class ProjectAdmin(admin.ModelAdmin):
list_display = ('project_name', 'project_tasks', 'task_deadlines', 'end_date')
list_filter = ['end_date']
search_fields = ['project_name']
def project_tasks(self, instance):
out = ""
for task in instance.task_set.all():
#generate html output
out += "{0}<br />".format(task.taskname)
return out
project_tasks.allow_tags = True #html should be renderd as is
project_tasks.short_description = "Task Name"
#Same for Deadline
这应该可以做到!