📅  最后修改于: 2023-12-03 15:14:43.498000             🧑  作者: Mango
Django Taggit是一个第三方库,用于在Django应用程序中轻松为项目添加标签的功能。它提供了一个易于使用的API,使开发人员可以轻松地添加、编辑和删除标签。
使用pip安装:
pip install django-taggit
然后将django_taggit添加到您的INSTALLED_APPS中:
INSTALLED_APPS = [
...
'taggit',
...
]
首先需要在views.py中编写视图函数,例如添加Tag:
from django.shortcuts import render, redirect
from myapp.models import MyModel
from taggit.models import Tag
def add_tag(request, id):
m = MyModel.objects.get(id=id)
tag_names = request.POST.getlist('tags')
for tag_name in tag_names:
tag_obj = Tag.objects.get_or_create(name=tag_name)
m.tags.add(tag_obj)
return redirect('myapp:mymodel_detail', id=id)
在前端可以通过form表单提交数据:
<form action="{% url 'add_tag' id=id %}" method="post">
{% csrf_token %}
<label>Tag(s):</label>
<input type="text" name="tags" class="form-control tag-input">
<input type="submit" value="Add Tags" class="btn btn-primary">
</form>
然后,在models.py中添加TaggableManager字段:
from django.db import models
from taggit.managers import TaggableManager
class MyModel(models.Model):
title = models.CharField(max_length=255)
description = models.TextField()
tags = TaggableManager()
这会自动为您提供一个tags字段,您可以在其中添加所需的标签。
你可以通过调用delete()方法删除标签:
tag = Tag.objects.get(name='my_tag')
tag.delete()
或者在模型中进行操作:
obj.tags.remove('tag_name')
可以通过查询标签找到带有特定标签的模型:
from myapp.models import MyModel
from taggit.models import Tag
tag = Tag.objects.get(name='my_tag')
mymodels = MyModel.objects.filter(tags=tag)
在input标签中添加'class="tag-input"',即可自动添加标记:
<form action="{% url 'add_tag' id=id %}" method="post">
{% csrf_token %}
<label>Tag(s):</label>
<input type="text" name="tags" class="form-control tag-input">
<input type="submit" value="Add Tags" class="btn btn-primary">
</form>
Django Taggit提供了一个简单而强大的方法来添加标签,使您的应用程序更易于管理和组织。它可以轻松地与现有的Django应用程序集成,并通过提供自动完成等功能来简化用户输入。如果您需要在应用程序中添加标签功能,Django Taggit是一个值得考虑的选择。