如何自定义Django的Flatpage以在管理员的更改列表页面上显示新字段?

Thi*_*Lam 3 django django-admin

在我的平面页面管理员更改列表页面中mysite.com/admin/flatpages/flatpage/,我可以看到以下字段:

  1. 网址
  2. 标题

有没有办法显示现场网站?我将我的flatpages与特定网站相关联.执行此操作的不好方法是转到实际的Flatpage管理源django/contrib/flatpages/admin.py并创建一个方法,该方法将在更改列表页面上显示Flatpage的网站.

我基本上是在寻找一种在管理端覆盖django.contrib应用程序的方法.

Ala*_*air 10

您无需编辑flatpages/admin.py.而是创建一个CustomFlatPageAdmin继承自默认值的FlatPageAdmin.

您可能想要customflatpage为以下admin.py文件创建应用程序,或者您可能已经有一个可以添加到其中的实用程序应用程序.

#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)
Run Code Online (Sandbox Code Playgroud)