Como posso personalizar flatpage do Django para exibir um novo campo na página de listagem do admin?
-
08-07-2019 - |
Pergunta
Na minha página de listagem flatpage admin, mysite.com/admin/flatpages/flatpage/
, eu posso ver os campos:
- URL
- 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.
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)