我有以下型号
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)。我只想要Note模型中标签出现的次数(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或taglist。如何使用taggit和taggit-templatetags(或替代方案)计算每个模型的标签频率(num_times) ?
感谢。
答案 0 :(得分:0)
似乎您的应用名称为“备注”,Text
和Note
是此应用内的模型。
如果您只想在模型文本中使用标签,则应使用:
{% get_taglist as all_labels for 'notes.Text' %}
如果您只想在模型注释中使用标签,则应使用:
{% get_taglist as all_labels for 'notes.Note' %}