2010-03-11 32 views
6

Soy muy nuevo en django, aproximadamente una semana después.Es posible, en una plantilla de django, verificar si un objeto está contenido en una lista

Estoy creando un sitio donde los usuarios ingresan cosas, luego otros usuarios pueden votar si les gusta o no. Sé que no es tan novedoso, pero es un buen proyecto aprender un montón de herramientas.

Tengo una tabla de muchos a muchos para almacenar a quién le gusta o no le gusta. Antes de renderizar la página, saco todos los gustos y aversiones para el usuario actual, junto con las cosas que voy a mostrar en la página.

Cuando renderizo la página, reviso la lista de cosas que voy a mostrar y las imprimo de a una por vez. Quiero mostrarle al usuario qué cosas le gustaban y cuáles no.

Así que en mi plantilla django, tengo un objeto llamado entrada. También tengo dos listas de objetos llamadas Me gusta y aversiones. ¿Hay alguna forma de determinar si la entrada es miembro de cualquiera de las listas, dentro de mi plantilla django?

creo que lo que estoy buscando es un filtro en el que puedo decir algo como

{% if entry|in:likes %} 

o

{% if likes|contains:entry %} 

Sé que podría añadir un método para mi modelo y comprobar para cada entrada individual, pero parece que sería una base de datos intensiva.

¿Hay alguna forma mejor de pensar sobre este problema?

Respuesta

0

Go here. Muy similar a lo que están usando en el maletero. "Guarde esto como smart_if.py en la carpeta templatetags de una de sus aplicaciones. Luego, un {% load smart_if%} simple reemplaza la aburrida función integrada de Django {% if%} con la nueva inteligente."

+0

No lo he intentado todavía, pero parece ser lo que necesito. – AlexH

13

Si está utilizando la última versión de Django, entonces es sólo

{% if entry in likes %} 

Refer django docs

+0

Estoy usando 1.1.1. ¿Hay alguna opción sin actualizar? ¿Cuándo el desarrollador va a ser producción? ¿Alguien sabe? – AlexH

+1

Algunas personas lo saben. Aquí está el enlace de la página de inicio: http://www.djangoproject.com/weblog/2010/mar/09/django-1_2-release-schedule/ –

-1

Si usted no está funcionando tronco de uno de los siguientes debería funcionar:

Filter:

Reemplazo de la etiqueta "if", en gran medida la base para el new functionality en la próxima versión 1.2:

+0

Se recomienda incluir aquí la solución, no solo los enlaces a la misma. – emi

Cuestiones relacionadas