Frage

Ich habe ein ziemlich einfaches Modell, das Django Taggit zum Tagging verwendet.

Alles funktioniert großartig, aber jetzt möchte ich einige Funktionen erweitern und ich bin ein wenig verwirrt.

Was ich will, sind zwei Ansichten.

Eine, die alle meine Tags im System zeigt. Eine, die alle Inhalte aus meiner App mit einem bestimmten Tag zeigt.

Was für mich Sinn macht, ist, für jede Ansicht das Folgende zu tun.

in Blicks.py für MyApp

  1. Alle Tags

    von MyApp.models importieren Sie App

    von taggit.models import tag tag

    Klasse Tagist (ListView):

    "" Holen Sie sich alle Tags in der DB "" ""

    queryset = Tag.objects.all()
    template_name = "myapp/TagList.html"
    paginate_by = 10
    
  2. Alle Inhalte für ein Tag

    von MyApp.models importieren Sie App

    von taggit.models import tag tag

    Klasse TaggedList (ListView): "" "" "All den Contet für ein Tag" "" ""

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

Habe ich meinen Verstand verloren oder ist es wirklich so einfach? Übrigens verwende ich generische Klassenansichten.

Danke für die Hilfe. Dave

War es hilfreich?

Lösung

2. Ich glaube, dies ist für die Rückgabe eines einzelnen Objekts, nicht für mehrere Objekte.

def get_object(self):  

Stattdessen sollten Sie vielleicht so etwas wie Folgendes ausprobieren:

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

Dies gibt eine Liste von Elementen mit genericforeignkeys zurück

Wenn Sie nur an einem bestimmten Modell namens App interessiert sind

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

Die Standardvariablenname in der Vorlage wird dann markiert

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

Die URLS.Py müsste ähnlich sein wie

url(r'someapp/(?P<tag>\w+)/$', TaggedList.as_view())
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top