Как настроить Flatpage Django для отображения нового поля на странице списка изменений администратора?

StackOverflow https://stackoverflow.com/questions/1639866

  •  08-07-2019
  •  | 
  •  

Вопрос

На странице списка изменений администратора моей плоской страницы mysite.com/admin/flatpages/flatpage/ я вижу поля:

<Ол>
  • URL
  • Название
  • Есть ли способ показать поле сайта? Я связываю свои страницы с конкретными сайтами. Плохой способ сделать это - перейти к фактическому источнику администрирования Flatpage django/contrib/flatpages/admin.py и создать метод, который будет отображать сайты для Flatpage на странице списка изменений.

    Я в основном ищу способ перезаписать приложение django.contrib на стороне администратора.

    Это было полезно?

    Решение

    Вам не нужно редактировать 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)
    
    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top