2010-08-29 11 views
5

Estoy enviando contenido desde mis modelos a mis plantillas, sin embargo, algunos campos modelo llaman a datos almacenados en otros modelos. Esto ocurre solo en unos pocos campos. Me pregunto si usar una etiqueta if para evaluar esto sería más eficiente en comparación con el almacenamiento de las etiquetas django dentro de los modelos.Almacenamiento y escape de etiquetas y filtros de Django en los modelos Django

Las respuestas a this question dicen que almacenar etiquetas django en los modelos es una mala idea sin dar razones (aunque creo que una de las razones puede ser que alguien más pueda inyectar algunas etiquetas en la Base de datos). Suponiendo que la inyección de la base de datos es una rareza, ¿hay alguna forma de evitar las etiquetas y los filtros de Django almacenados en un modelo?

O mejor aún, ¿cuál sería el método más eficiente para manejar la situación anterior donde un campo modelo en varios campos llama campos almacenados en otro modelo.

Ejemplo:

Esto se debe almacenar en mis modelos

<p>We focus on:</p> 
{% for item in services %} 
{% url service_view item.id as service_url %} 
<ul> 
<li><a href="service_url">{{item.title}}</a></li> 
</ul> 
{% endfor %} 

Dar salida que debería dar lugar a Django analizar las etiquetas de Django pertinentes como si parte de la plantilla

+0

No entiendo su pregunta en absoluto. "Etiquetas almacenadas en la base de datos"? ¿Podría darnos algunos ejemplos? –

Respuesta

1

Gracias Ned, traté de implementarlo, pero me pareció bastante complejo y también es desventajoso en términos de portabilidad.

Sin embargo, encontré exactamente lo que necesitaba en Django Snippets (no sé por qué no miré allí primero). Es una utilidad bastante útil conocida como render_as_template.

Después de configurarlo como una etiqueta personalizada, todo lo que necesitaba era usarlo en el formato {% render_as_template about_view.content %} y las etiquetas en los modelos se representaban como modelos.

instrucciones sobre cómo crear sus propias plantillas y etiquetas available here

0

personalizados que usted debe utilizar inclusion tags y luego incluir esa etiqueta donde desea que el HTML que se prestarán. El modelo debería estar generando valores para las variables, no formateando.

+0

¿Cómo funciona esto? El motivo de todo el problema es incluir la producción de otro modelo en unos pocos campos de otro modelo. Al hacer esto, quiero mantener el rendimiento evitando que un bucle siga ejecutándose para verificar si el campo llama a otros modelos. Para evitar el bucle, guardo los datos en el campo con código para llamar a campos relacionados de otro modelo. –

Cuestiones relacionadas