2012-10-15 44 views
8

Làm thế nào để có được tất cả các thẻ (duy nhất) từ django-taggit? Tôi muốn hiển thị tất cả các thẻ trong thanh bên. Hiện tại tôi có thể nhận tất cả các thẻ cho một bài đăng cụ thể, nhưng bây giờ tôi cần phải có tất cả các thẻ duy nhất trong toàn bộ blog.Nhận tất cả các thẻ từ taggit

mã trong 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() 

Trả lời

15

Bạn có thể sử dụng all() để có được tất cả các thẻ trong cơ sở dữ liệu của bạn:

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

Nếu bạn cần một giải pháp hoàn chỉnh, có một cái nhìn tại django-taggit-templatetags. Nó cung cấp một số templatetags, bao gồm một cho danh sách thẻ, để hiển thị các API taggit trực tiếp cho các mẫu.

+0

Cảm ơn. Tôi có nên thêm "thẻ = Tag.objects.all()" trong Bài đăng không? Và làm thế nào để hiển thị nó? – Robby

+0

Ý của bạn là cho một bài đăng, tức là bài đăng = Post.objects.get (pk = 1)? Hoặc tất cả các bài đăng (Post.objects.all())? –

+0

@Vino Không, bạn không nên thêm nó vào mô hình 'Đăng' của mình. Chỉnh sửa chế độ xem hiện tại nơi bạn muốn hiển thị thanh bên và chuyển danh sách thẻ vào mẫu của bạn. 'Tag.objects.all()' là cách tiêu chuẩn để truy xuất các đối tượng thông qua ORM Django. Hãy xem [tài liệu] (https://docs.djangoproject.com/en/dev/topics/db/queries/#retrieving-objects) để biết thêm chi tiết. Nếu bạn chỉ cần tên thẻ, hãy sử dụng danh sách hiểu: 'tag_names = [tag.name cho thẻ trong Tag.objects.all()]' –

Các vấn đề liên quan