Come faccio a creare visualizzazioni elenco e il dettaglio per Django-taggit?
-
25-10-2019 - |
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
-
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
-
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
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())