如何定制Django';在管理员的更改列表页面上显示一个新字段?
在我的flatpage管理员更改列表页面,如何定制Django';在管理员的更改列表页面上显示一个新字段?,django,django-admin,Django,Django Admin,在我的flatpage管理员更改列表页面,mysite.com/admin/flatpage/flatpage/,我可以看到以下字段: 网址 头衔 有没有一种方法可以同时显示现场?我将我的页面与特定站点关联。不好的方法是转到实际的Flatpage admin sourcedjango/contrib/flatpages/admin.py并创建一个方法,该方法将在更改列表页面上显示Flatpage的站点 我基本上是在寻找一种在管理端覆盖django.contrib应用程序的方法。您不需要编辑fla
mysite.com/admin/flatpage/flatpage/
,我可以看到以下字段:
django/contrib/flatpages/admin.py
并创建一个方法,该方法将在更改列表页面上显示Flatpage的站点
我基本上是在寻找一种在管理端覆盖django.contrib应用程序的方法。您不需要编辑flatpages/admin.py。相反,创建一个从默认
FlatPageAdmin
继承的CustomFlatPageAdmin
您可能希望为以下admin.py文件创建一个customflatpage
应用程序,或者您已经有了一个可以将其添加到的实用程序应用程序
#admin.py
from django.contrib import admin
from django.contrib.flatpages.models import FlatPage
from django.contrib.flatpages.admin import FlatPageAdmin
def get_sites(obj):
'returns a list of site names for a FlatPage object'
return ", ".join((site.name for site in obj.sites.all()))
get_sites.short_description = 'Sites'
class CustomFlatPageAdmin(FlatPageAdmin):
list_display = ('title', 'url', get_sites)
#unregister the default FlatPage admin and register CustomFlatPageAdmin.
admin.site.unregister(FlatPage)
admin.site.register(FlatPage, CustomFlatPageAdmin)
Alasdair在下面给出了一个很好的答案,但是你知道Flatpage的默认管理员确实包括site字段,它只是在一个默认折叠的额外字段集中?@Carl如果我转到一个单独的Flatpage,例如
admin/Flatpage/Flatpage/1
我可以看到这些站点,但是Thierry想在flatpage更改列表视图中添加一列站点列表admin/flatpages/flatpage/
。除非我弄错了,否则默认情况下唯一的列是title
和url
。