2012-10-15 43 views
8

Django-taggit'ten tüm (benzersiz) etiketler nasıl alınır? Tüm etiketleri bir yan çubukta görüntülemek istiyorum. Şu anda belirli bir gönderi için tüm etiketleri alabiliyorum, ancak şimdi tüm blogda tüm benzersiz etiketleri almam gerekiyor. models.py içindeTüm etiketleri etiketlere git

kodu:

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

cevap

15

Sen veritabanındaki tüm etiketleri almak için all() kullanabilirsiniz:

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

tam bir çözüm gerekiyorsa, django-taggit-templatetags de bakabilirsiniz. Çeşitli taggit API'lerini doğrudan şablonlara sunmak için etiket listesi için bir tane de dahil olmak üzere çeşitli templatetags sağlar.

+0

Teşekkürler. Post altında "tags = Tag.objects.all()" yazmalı mıyım? Ve nasıl gösterilecek? – Robby

+0

Bir mesaj için mi demek istiyorsunuz? Post = Post.objects.get (pk = 1)? Veya tüm mesajlar (Post.objects.all())? –

+0

@Vino Hayır, bunu 'Post' modelinize eklememelisiniz. Kenar çubuğunu görüntülemek ve etiket listesini şablonunuza aktarmak istediğiniz geçerli görünümü düzenleyin. Tag.objects.all() ', Django ORM ile nesneleri almanın standart yoludur. Daha fazla ayrıntı için [belgeler] 'e (https://docs.djangoproject.com/en/dev/topics/db/queries/#retrieving-objects) bir göz atın. Sadece etiket adlarına ihtiyacınız varsa, bir liste kavrayışını kullanın: 'tag_names = Tag.objects.all() 'deki etiket için [tag.name]' –

İlgili konular