2010-10-08 7 views
12

Tengo una situación en la que anulé la plantilla admin_change.html para un modelo determinado. He creado un archivo, tales como:Django Override Admin change_form.html Plantilla: muestra el modelo asociado en la plantilla

/myproject/templates/admin/myapp/mymodel/change_form.html 

A continuación, en la plantilla change_form.html overrided, donde estoy editando una instancia de objeto existente, quiero tener acceso a esa variable instancia de modelo para que pueda mostrar más información al respecto.

{% extends "admin/change_form.html" %} 
{% block after_field_sets %}{{ block.super }} 
Print my model here: {{ mymodel }} 
Print foreignkey related records of my model: 
    {% for item in mymodel.items_set.all %} {{ item }} {% endfor %} 
{% endblock %} 

Sin embargo, no sé lo que la variable de plantilla se llama que debo utilizar para tener acceso a este modelo (si se pasa incluso en absoluto). Intenté buscar el código fuente del administrador, pero me pierdo rápidamente. ¿Alguien sabe cómo acceder a la variable de instancia de este modelo desde una plantilla extendida de django?

(NOTA: en el código anterior, la referencia a {{mymodel}} es incorrecta. Pero el punto es que quiero poder usar una variable como esa en mi código de plantilla para hacer referencia a la instancia de mymodel).

Cualquier consejo es muy apreciado. Gracias, Joe

Respuesta

16

Parece que encontré un medio para hacer esto con esta sintaxis.

{% extends "admin/change_form.html" %} 
{% block after_field_sets %}{{ block.super }} 
Print my model here {{ original }} 
Print foreignkey related records of my model: 
{% for item in original.items_set.all %} {{ item }} {% endfor %} 
{% endblock %} 

Lamento contestar tan pronto, pero gracias a todos los que empezaron a investigar. Quizás alguien encuentre esto útil. Si ve una mejor manera de hacerlo, no dude en comentar.

+0

y ¿qué es original? – Mariuz

+0

original es la variable que representa el objeto que se está editando en el formulario de cambio. Si estuviera viendo/admin/auth/user /, entonces el original sería una instancia de Usuario, por ejemplo. –

+0

¿Alguien sabe dónde podemos encontrar documentación sobre 'original' –

11

Simplemente dando vueltas, parece que {{adminform.form.instance}} funciona.

Cuestiones relacionadas