У меня есть следующие модели
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 (столбцы: id, name, slug) и taggit_taggeditem (id, tag_id, object_id, content_type_id). Я не знаю, откуда берется бит _items
, но я думаю, что это из базового класса taggit models.py.
Может ли проблема быть в методе unicode (который использует текст в обеих моделях)?
Короче говоря, я хочу облако тегов или список тегов для конкретной модели. Как я могу использовать taggit и taggit-templatetags (или альтернативу) для расчета частоты тегов (num_times) для каждой модели?
Спасибо.