2013-07-28 41 views
0

我有以下型號如何在django-taggit-templatetags中糾正錯誤的num_times?

class Text(models.Model): 
    text = models.CharField(max_length=10000, blank=True) 
    tags = TaggableManager(blank=True) 
    author = models.ForeignKey(User) 
    date_created = models.DateTimeField(auto_now_add=True) 
    last_modified = models.DateTimeField(auto_now=True) # changes on each edit 
    public = models.BooleanField(default=1) 

    def __unicode__(self): 
     return self.text 

class Note(models.Model): 
    note = models.CharField(max_length=1000) 
    tags = TaggableManager(blank=True) 
    text = models.ManyToManyField(Text) 
    author = models.ForeignKey(User) 
    date_created = models.DateTimeField(auto_now_add=True) 
    last_modified = models.DateTimeField(auto_now=True) # changes on each edit 
    public = models.BooleanField(default=1) 

    def __unicode__(self): 
     return u'%s' % (self.text.all()) 

我使用的Django taggit和Django的taggit-templatetags。當我提出這樣的觀點:

@staff_member_required #TODO disadvantage: redirects to admin page 
def labels_all(request): 
    return render_to_response('labels_all.html', locals(), context_instance=RequestContext(request)) 

與模板類似

{% extends 'base.html' %} 
{% load taggit_extras %} 

{% block content %} 

{% get_taglist as all_labels for 'notes' %} 
<div class="tag-cloud"> 
<ul> 
{% for label in all_labels %} 
<li> 
<a href="/labels/{{ label.slug }}"> 
    <font size={{label.weight|floatformat:0}}> 
    {{ label|capfirst }} ({{ label.num_times }}) 
    </font> 
</a> 
</li> 
{% endfor %} 
</ul> 
</div>  

兩款車型有TaggableManager。當我爲兩個模型中的任何一個製作標記列表時,我得到錯誤的num_times值。我得到的num_times是上述兩個模型中特定標記發生的次數(例如71)。我只想要標註在註釋模型(50)中出現的次數。

我認爲這個問題是在此代碼的48行:https://github.com/feuervogel/django-taggit-templatetags/blob/master/taggit_templatetags/templatetags/taggit_extras.py

它用來taggit_taggeditem_items通話。我不知道這是從哪裏來的。在數據庫中我有:taggit-tag(colums:id,name,slug)和taggit_taggeditem(id,tag_id,object_id,content_type_id)。我不知道它在哪裏得到_items位,但我認爲它來自taggit的models.py BaseClass。

問題出在unicode方法(它使用兩種模型中的文本)嗎?

總之,我想要一個特定模型的tagcloud或標籤列表。如何使用taggit和taggit-templatetags(或其他選項)來計算每個模型的標籤頻率(num_times)

謝謝。

回答

0

似乎您的應用程序的名稱是'筆記',並且TextNote是此應用程序中的模型。

如果你想只在示範文本中使用的標籤,你應該使用:

{% get_taglist as all_labels for 'notes.Text' %} 

如果你只想在模型注意使用的標籤,你應該使用:

{% get_taglist as all_labels for 'notes.Note' %}