Para ampliar la respuesta de Yuji, aquí están algunos detalles sobre la sustitución change_list_results.html
...
Anulación changelist_view
como se describe anteriormente en el paso 1, y también describió here at djangoproject. O auto-override mediante la colocación en el directorio apropiado como en el paso 2 anterior. (Tenga en cuenta que la ruta de paso 2 se muestra arriba es-modelo específico. App-específico sería /admin/<MyAppName>/change_list.html
bajo cualquier directorio definido en la tupla TEMPLATE_DIRS.)
O (quizás más fácil) basta con especificar ModelAdmin.change_list_template
como se explica here con cualquier nombre de archivo de plantilla de detección. (Aunque, si no conserva el nombre change_list.html
, asegúrese de no depositar directamente en la carpeta /admin
, de lo contrario la etiqueta extends
causará una recursividad.)
class MyModelAdmin(admin.ModelAdmin):
change_list_template = 'change_list.html' # definitely not 'admin/change_list.html'
# ...
En su plantilla change_list.html
, tener como mínimo
{% extends "admin/change_list.html" %}
{% load i18n admin_static admin_list %}
{% load myapptags %}
{% block result_list %}
{% if action_form and actions_on_top and cl.full_result_count %}{% admin_actions %}{% endif %}
{% result_list cl %}
{% if action_form and actions_on_bottom and cl.full_result_count %}{% admin_actions %}{% endif %}
{% endblock %}
crear un paquete /<MyAppName>/templatetags
(un directorio que contiene __init__.py
) Con un archivo correspondiente a la etiqueta de carga por encima de
# MyAppName/templatetags/myapptags.py
from django import template
from django.contrib.admin.templatetags.admin_list import result_list
register = template.Library()
register.inclusion_tag('my_change_list_results.html')(result_list)
copiar y editar Django de change_list_results.html
(como por ejemplo, my_change_list_results.html
arriba) para usar su funcionalidad agregada.
Tenga en cuenta que estos pasos no incluyen contexto adicional para la plantilla, pero se pueden ampliar fácilmente como tales. (Mi razón para hacer esto era agregar clases de CSS y un líder <tbody>
que no se solucionó con la lista de resultados.)
ADICIONAL:
Incluir contexto adicional, cambiar su módulo templatetags de la siguiente manera:
# MyAppName/templatetags/myapptags.py
from django import template
from django.contrib.admin.templatetags.admin_list import result_list as admin_list_result_list
def result_list(cl):
mycl = {'myextracontext': 'something extra'}
mycl.update(foo_extra())
mycl.update(admin_list_result_list(cl))
return mycl
register = template.Library()
register.inclusion_tag('my_change_list_results.html')(result_list)
Entonces, el valor de myextracontext
o lo que sea foo_extra
retornos pueden ser incluidos en la plantilla de resultados (como por ejemplo {{ myextracontext }}
)
Existen algunas funciones para admin.py que le ayudan a anular los métodos regulares ... [Consulte aquí] (http://docs.djangoproject.com/en/dev/ref/contrib/admin/ # other-methods) ... Pueden ayudarte ... – FallenAngel