2014-12-06 57 views
4

我可以用一个像这样的模板Django的taggit如何让所有标签

{% for tag in blog.tags.all %} 
    <span class="label label-default">{{ tag.name }}</span> 
{% endfor %} 

得到所有标签的名字之一,我可以从这样{{ form.tags }}形式获得的输入,这让我:

<input id="id_tags" name="tags" type="text" value="xxx,y y y,zzz"> 

不过,我想自定义输入在我的模板,这样

<input id="id_tags" class="form-control" maxlength="50" name="title" type="text" placeholder="tags" value="{{ form.tags }}"> 

如何设置在put's value =“{{ form.tags }}”?

+0

能不能请你的表单类更新你的问题?您可能需要用初始值填充“标签”字段 – tutuDajuju 2015-05-04 11:45:54

回答

2

在你的模型,你可以做到以下几点:

  1. 首先,你应该有

    标签= TaggableManager(空白= TRUE)

  2. 下面将得到所有的标签和你可以使用list_field中的get_tags来获取每条记录的所有标签。

    def get_tags(self): tags = [] for tag in self.tags.all(): tags.append(str(tag)) return ', '.join(tags)

0

如果可能的话,我建议你最好使用Django的基于类的表单(而不是手工编写HTML),因为Taggit已经为你处理了这个问题。

但试图回答你的问题,如果你想获得特定对象的所有标签,我认为你需要的是blog.tags.values_list('name', flat = True),这意味着你需要编写一个自定义模板标签或 - 如果你'使用'blog'这个词来表示'博客'',并且您处于单个博客文章页面 - 您可以将上述内容添加到视图的上下文中。