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