2011-01-09 16 views
5

que tienen la siguiente clase que estoy usando a los elementos de marcador:¿Cómo puedo atravesar una relación genérica inversa en una plantilla de Django?

class BookmarkedItem(models.Model): 
    is_bookmarked = models.BooleanField(default=False) 
    user = models.ForeignKey(User) 
    content_type = models.ForeignKey(ContentType) 
    object_id = models.PositiveIntegerField() 
    content_object = generic.GenericForeignKey() 

Y estoy definiendo una relación genérica inversa de la siguiente manera:

class Link(models.Model): 
    url = models.URLField() 
    bookmarks = generic.GenericRelation(BookmarkedItem) 

En uno de mis puntos de vista genero un conjunto de consultas de todos los enlaces y añádalo a un contexto:

links = Link.objects.all() 
context = { 
    'links': links 
} 
return render_to_response('links.html', context) 

El problema que tengo es cómo atravesar la relación genérica en mi plantilla. Para cada enlace, deseo poder verificar el atributo is_bookmarked y cambiar el botón Agregar/Eliminar marcador según si el usuario ya lo tiene marcado o no. ¿Es esto posible en la plantilla? ¿O tengo que hacer algunos filtros adicionales en la vista y pasar otro queryset?

Respuesta

4

Puesto que usted ha definido el campo 'marcadores' GenericRelation, sólo puede iterar a través de lo siguiente:

{% for bookmark in link.bookmarks.all %} 
Cuestiones relacionadas