Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何定制Django';在管理员的更改列表页面上显示一个新字段?_Django_Django Admin - Fatal编程技术网

如何定制Django';在管理员的更改列表页面上显示一个新字段?

如何定制Django';在管理员的更改列表页面上显示一个新字段?,django,django-admin,Django,Django Admin,在我的flatpage管理员更改列表页面,mysite.com/admin/flatpage/flatpage/,我可以看到以下字段: 网址 头衔 有没有一种方法可以同时显示现场?我将我的页面与特定站点关联。不好的方法是转到实际的Flatpage admin sourcedjango/contrib/flatpages/admin.py并创建一个方法,该方法将在更改列表页面上显示Flatpage的站点 我基本上是在寻找一种在管理端覆盖django.contrib应用程序的方法。您不需要编辑fla

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

  • 网址
  • 头衔
  • 有没有一种方法可以同时显示现场?我将我的页面与特定站点关联。不好的方法是转到实际的Flatpage admin source
    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