【问题标题】:How to correct wrong num_times in django-taggit-templatetags?如何纠正 django-taggit-templatetags 中错误的 num_times?
【发布时间】:2013-07-28 10:16:00
【问题描述】:

我有以下型号

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 BaseClass。

问题是否出在 unicode 方法(在两个模型中都使用文本)?

简而言之,我想要一个特定模型的 tagcloud 或 taglist。如何使用 taggit 和 taggit-templatetags(或替代方法)来计算标签频率(num_times)每个模型

谢谢。

【问题讨论】:

    标签: django django-taggit


    【解决方案1】:

    您的应用名称似乎是“notes”,TextNote 是此应用中的模型。

    如果您只想在模型文本中使用标签,您应该使用:

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

    如果您只想在模型注释中使用标签,您应该使用:

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

    【讨论】:

      猜你喜欢
      • 2021-07-31
      • 1970-01-01
      • 2016-08-16
      • 1970-01-01
      • 1970-01-01
      • 2017-08-02
      • 2015-02-25
      • 2010-10-18
      • 1970-01-01
      相关资源
      最近更新 更多