Como posso personalizar flatpage do Django para exibir um novo campo na página de listagem do admin?

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

  •  08-07-2019
  •  | 
  •  

Pergunta

Na minha página de listagem flatpage admin, mysite.com/admin/flatpages/flatpage/, eu posso ver os campos:

  1. URL
  2. Título

Existe uma maneira de mostrar também o local campo? Associo minhas flatpages a sites específicos. A má maneira de fazer isso é indo até o flatpage django/contrib/flatpages/admin.py fonte de administração atual e criar um método que irá mostrar locais para uma flatpage na página de lista de alterações.

Eu estou basicamente procurando uma maneira de substituir uma aplicação django.contrib no lado do administrador.

Foi útil?

Solução

Você não precisa editar flatpages / admin.py. Em vez disso, criar um CustomFlatPageAdmin que herda da FlatPageAdmin padrão.

Você pode querer criar um aplicativo customflatpage para o arquivo admin.py seguinte, ou talvez você já tem um aplicativo utilitários que você pode adicioná-la a.

#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)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top