2012-10-15 25 views
8

Jak zdobyć wszystkie (unikalne) znaczniki z django-taggit? Chciałbym wyświetlić wszystkie znaczniki na pasku bocznym. Obecnie jestem w stanie uzyskać wszystkie tagi dla konkretnego posta, ale teraz muszę uzyskać wszystkie unikalne tagi na całym blogu.Pobierz wszystkie tagi z taggit

kod w 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() 

Odpowiedz

15

Można użyć all() uzyskać wszystkie znaczniki w bazie danych:

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

Jeśli potrzebujesz kompletnego rozwiązania, rzucić okiem na django-taggit-templatetags. Udostępnia kilka templatetags, w tym jeden dla listy tagów, aby odsłonić różne interfejsy API taggit bezpośrednio do szablonów.

+0

Dzięki. Czy powinienem dodać "tags = Tag.objects.all()" w Post? A jak to wyświetlić? – Robby

+0

Masz na myśli jeden post, tj. Post = Post.objects.get (pk = 1)? Lub wszystkie posty (Post.objects.all())? –

+0

@Vino Nie, nie powinieneś dodawać go do swojego modelu 'Post'. Edytuj bieżący widok, w którym chcesz wyświetlić pasek boczny i przekazać listę tagów do szablonu. 'Tag.objects.all()' jest standardowym sposobem pobierania obiektów poprzez ORM Django. Zajrzyj do [dokumentacja] (https://docs.djangoproject.com/en/dev/topics/db/queries/#retrieving-objects), aby uzyskać więcej informacji. Jeśli potrzebujesz tylko nazw znaczników, użyj zrozumienia list: 'tag_names = [tag.name dla tagu w Tag.objects.all()]' –

Powiązane problemy