使用Django-Taggit添加标签

时间:2016-04-28 15:53:17

标签: django-taggit

我尝试过不同的Django-taggit教程,但由于某种原因,他们都展示了如何通过Admin添加标签。我想知道我可以在创建Model的实例时使用View和模板添加标签吗?或者我应该只为现有项目添加标签?有没有最近的Django-Taggit教程或我的标签更好的应用程序?

2 个答案:

答案 0 :(得分:1)

他们的documentation非常膨胀。设置模型后,您可以像使用表单中的任何其他字段一样使用标记字段。它将自动设置为解析标记。

这是一个非常基本的工作示例。

views.py

from django.shortcuts import render
from .models import NewspaperIndex
from .forms import NewIndexForm

def overview(request):
    if request.method == "POST":
        form = NewIndexForm(request.POST)
        if form.is_valid():
            form.save()
    else:
        form = NewIndexForm()

    indexes = NewspaperIndex.objects.all()

    context = {'form': form,
               'indexes': indexes
           }

    return render(request, 'newsindex/overview.html', context)

models.py

from django.db import models
from taggit.managers import TaggableManager


class NewspaperIndex(models.Model):
    title = models.CharField(max_length=200)
    date = models.DateField()
    abstract = models.TextField()
    tags = TaggableManager()

    def __str__(self):
        return self.title

forms.py

import datetime

from django import forms
from django.forms import ModelForm
from .models import NewspaperIndex


class NewIndexForm(forms.ModelForm):

    class Meta:
        model = NewspaperIndex
        fields = ['title', 'date', 'abstract', 'tags']

模板/新闻索引/ overview.html

  <form class="" action="./" method="post">
    {% csrf_token %}
    {{form.as_p}}
    <input type="submit" name="submit" value="Submit">
  </form>

答案 1 :(得分:0)

如果要从外壳添加标签,请尝试:

tag='tag to add'
post=NewspaperIndex.objects.all()[0] #pick an object, to add tag to
post.tags.add(tag)