Pregunta

Tengo un modelo bastante simple que usa Django Taggit para etiquetar.

Todo funciona muy bien, pero ahora me gustaría expandir alguna funcionalidad y estoy un poco confundido.

Lo que quiero es dos vistas.

Uno que muestra todas mis etiquetas en el sistema. Uno que muestra todo el contenido de mi aplicación con una etiqueta específica.

Lo que tiene sentido para mí es hacer lo siguiente para cada vista.

en las vistas.

  1. Todas las etiquetas

    de la aplicación de importación myapp.models

    de etiqueta de importación de modelos.

    Clase TagList (ListView):

    "" "Obtenga todas las etiquetas en el DB" ""

    queryset = Tag.objects.all()
    template_name = "myapp/TagList.html"
    paginate_by = 10
    
  2. Todo el contenido para una etiqueta

    de la aplicación de importación myapp.models

    de etiqueta de importación de modelos.

    clase TaggedList (ListView): "" "Obtenga todo el contet para una etiqueta" ""

    template_name = "myapp/TaggedList.html"
    
    def get_object(self):
        return get_list_or_404(App, tag__iexact=self.kwargs['tag'])
    

¿He perdido la cabeza o es realmente tan fácil? Por cierto, estoy usando vistas de clase genérica.

Gracias por la ayuda. Dave

¿Fue útil?

Solución

2. Creo que esto es para devolver un solo objeto, no múltiples objetos.

def get_object(self):  

En cambio, tal vez deberías intentar algo como lo siguiente:

def get_queryset(self):
    return TaggedItem.objects.filter(tag__iexact=self.kwargs['tag'])

Esto devuelve una lista de elementos con Generic Forebrays

Si solo está interesado en un modelo específico llamado aplicación, entonces

    return App.objects.filter(tags__name__in=[self.kwargs['tag']])

El nombre de la variable predeterminado en la plantilla es TagGedItem_List entonces

{% for item in TaggedItem_list %}
   {{item.content_object}} {# generic foreign key here #}
{% endfor %}

Las urls.py tendría que ser similar a

url(r'someapp/(?P<tag>\w+)/$', TaggedList.as_view())
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top