python - get_template - ¿Cómo uso allow_tags en django 2.0 admin?
python django template (3)
Además de las otras respuestas, puede utilizar la función mark_safe
como decorador:
from django.utils.safestring import mark_safe
@mark_safe
def icon_pw(self, obj):
return f''<img src="{obj.icon.url}" />'' if obj.icon else ''''
icon_pw.short_description = ''Icon''
icon_pw.allow_tags = True
Esta es la manera fácil de actualizar su antiguo código de administrador de Django a 2.0.
Se elimina la compatibilidad con el atributo allow_tags en los métodos ModelAdmin.
Si tiene su código en admin.py
, puede sobrescribir agregando solo la función mark_safe
, como en el siguiente ejemplo:
from django.utils.safestring import mark_safe
def get_image_tag(self):
if self.picture:
return mark_safe(''<img src="%s" width="60" height="75" />'' % self.picture.url)
else:
return '' ''
get_image_tag.short_description = ''Photo''
#get_image_tag.allow_tags = True #redundant
get_image_tag.admin_order_field = ''name''
Este código fue probado en Django 2.0.2 y Python 3.6.4.
Acabo de encontrar la respuesta! usar la función mark_safe
en el código antiguo, puedes usar:
def image_(self, obj):
return ''<image src="%s" />'' % obj.image
image_.allow_tags = True
en el nuevo código, debe utilizar:
from django.utils.safestring import mark_safe
def image(self, obj):
return mark_safe(''<image src="%s" />'' % obj.image)