2011-06-07 64 views
15

我在我的一個項目中使用了django-taggit,我可以保存標籤並將其與特定記錄綁定。現在的問題是如何顯示與每條記錄相關的標籤?django-taggit - 我如何顯示與每條記錄相關的標籤

例如,在我的頁面上,我想顯示一個包含標題和內容的記錄,然後在其下面顯示與該記錄相關的標籤。

Views.py和mytemplate.html中有什麼?真正的例子將被真正讚賞。

回答

27

models.py

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

class MyObject(models.Model): 
    title = models.CharField(max_length=100) 
    content = models.TextField() 

    tags = TaggableManager() 

views.py

from django.views.generic import simple 

def show_object(request): 
    """ View all objects """ 
    return simple.direct_to_template(request, 
     template="folder/template.html", 
     extra_context={ 
      'objects':MyObject.objects.all(), 
     }) 

template.html

{% for object in objects %} 
    <h2>{{ object.title }}</h2> 
    <p>{{ object.content }}</p> 
    <ul> 
     {% for tag in object.tags.all %} 
      <li> {{ tag.name }} </li> 
     {% endfor %} 
    </ul> 
{% endfor %} 
+0

謝謝!很好的例子! – avatar 2011-06-07 14:21:04

+0

這將爲您擁有的每個對象創建額外的數據庫查詢。如果你有很多對象,那可能會讓事情變慢。我遇到過這個問題,正在尋找解決方案。 – teewuane 2013-04-19 17:44:01

+0

我有點晚回覆@teewuane,但是,您是對的。通過使用'preselect_related'從django.views.generic中導入簡單的''prefetch前面的 – 2014-02-07 11:13:40

13

如果你有急事ÿ ou還可以嘗試:

{{context_name.tags.all|join:", "}} 
+1

這正是我需要的。 – Pureferret 2015-09-19 17:40:37