Domanda

Ho un abbastanza semplice modello che utilizza Django Taggit per il tagging.

Tutto funziona alla grande, ma ora vorrei ampliare alcune funzionalità e io sono un po 'confuso.

Quello che voglio è due punti di vista.

quello che mostra tutti i miei tag nel sistema. Uno che mostra tutti i contenuti della mia app con un tag specifico.

Ciò che ha senso per me è quello di effettuare le seguenti operazioni per ogni visualizzazione.

in views.py per myapp

  1. Tutti i tag

    da myapp.models importare App

    da taggit.models import tag

    class TagList (ListView):

    "" "Get tutti i tag nel db """

    queryset = Tag.objects.all()
    template_name = "myapp/TagList.html"
    paginate_by = 10
    
  2. Tutti i contenuti di un tag

    da myapp.models importare App

    da taggit.models import tag

    class TaggedList (ListView): "" "Ottenere tutte le Contet di un tag """

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

Ho perso la mia mente o è davvero così facile? BTW, sto utilizzando le visualizzazioni di classe generici.

Grazie per l'aiuto. Dave

È stato utile?

Soluzione

2. Credo che questo sia per la restituzione di un singolo oggetto, non più oggetti.

def get_object(self):  

Invece forse si dovrebbe provare qualcosa di simile al seguente:

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

Questo restituisce un elenco di articoli con GenericForeignKeys

Se si è interessati solo in un modello specifico chiamato App poi

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

nome di variabile predefinito nel modello è TaggedItem_list poi

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

L'urls.py dovrebbe essere simile a

url(r'someapp/(?P<tag>\w+)/$', TaggedList.as_view())
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top