Imagine que tenha um form no front onde o usuário irá postar conteúdos html. No admin, conteúdos de usuários serão moderados, contudo não poderão ser editados. Nesse ponto o readonly fields ajuda muito. Mas como exibir o conteúdo html (safe) ao invés das tags?
Simples.
No seu admin.py faça da seguinte forma:
from django.contrib import admin
from .models import *
class ConteudoAdmin(admin.ModelAdmin):
search_fields = ('nome', 'email','titulo','texto')
list_display = ('nome', 'email','titulo','arquivo', 'data', 'hora')
list_filter = ['data',]
date_hierarchy = 'data'
readonly_fields = ['nome', 'email','titulo', 'texto_html','arquivo']
exclude = ['texto',]
save_on_top = True
def texto_html(self, obj):
return u'{0}'.format(obj.texto)
texto_html.allow_tags = True
texto_html.short_description = 'Texto'
admin.site.register(Conteudo, ConteudoAdmin)
Note que criei um método para retornar o atributo texto do meu objeto, e permiti ao método que retornasse tags html com o allow_tags = True. Para não ficar repetido, exclui o atributo original do admin com o exclude.
hasta!
Nenhum comentário:
Postar um comentário