2012-10-15 11 views
8

Wie bekomme ich alle (eindeutigen) Tags von django-taggit? Ich möchte alle Tags in einer Seitenleiste anzeigen. Derzeit kann ich alle Tags für einen bestimmten Beitrag abrufen, aber jetzt muss ich alle eindeutigen Tags im gesamten Blog abrufen.Erhalten Sie alle Tags von taggit

Code in models.py:

from django.db import models 
from taggit.managers import TaggableManager 

# Create your models here. 
class Post(models.Model): 
    title = models.CharField(max_length=100) 
    body = models.TextField() 
    created = models.DateTimeField() 
    tags = TaggableManager() 

Antwort

15

Sie können all() verwenden, um alle Tags in Ihrer Datenbank zu erhalten:

from taggit.models import Tag 
tags = Tag.objects.all() 

Wenn Sie eine komplette Lösung benötigen, haben einen Blick auf django-taggit-templatetags. Es bietet mehrere templatetags, einschließlich einer für Tag-Liste, um verschiedene Taggit-APIs direkt zu Vorlagen verfügbar zu machen.

+0

Danke. Sollte ich "tags = Tag.objects.all()" unter Post hinzufügen? Und wie wird es angezeigt? – Robby

+0

Meinst du für einen Beitrag, d. H. Post = Post.objects.get (pk = 1)? Oder alle Beiträge (Post.objects.all())? –

+0

@Vino Nein, du solltest es nicht zu deinem 'Post' Modell hinzufügen. Bearbeiten Sie die aktuelle Ansicht, in der die Seitenleiste angezeigt werden soll, und übergeben Sie die Tag-Liste an Ihre Vorlage. 'Tag.objects.all()' ist die Standardmethode zum Abrufen von Objekten über das Django-ORM. Weitere Informationen finden Sie in der Dokumentation (https://docs.djangoproject.com/de/dev/topics/db/queries/#retrieving-objects). Wenn Sie nur die Tag-Namen benötigen, verwenden Sie ein Listenverständnis: 'tag_names = [tag.name für tag in Tag.objects.all()]' –