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

标签 django django-admin

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

  • URL
  • 标题

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

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

    最佳答案

    您不需要编辑 flatpages/admin.py。相反,创建一个继承自默认 CustomFlatPageAdminFlatPageAdmin

    您可能想要为以下 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)
    

    关于django - 如何自定义 Django 的 Flatpage 以在管理员的更改列表页面上显示新字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1639866/

    相关文章:

    django admin - 在带有中间表的多对多字段上使用水平过滤器

    django - 对象没有属性 'distance' - GeoDjango

    python - Django动态页面功能和url

    Django 信号重定向

    django - 启动 dbshel​​l sqlite3 时选项太多

    django - 保存 geodjango PointField 时出错

    python - 从管理界面保存时未触发 Django 信号

    python - 显示 Django Admin 的购买历史记录

    django - 如何向 Django 管理添加自定义功能?

    django - 覆盖 django 管理分页以及 url 参数