📅  最后修改于: 2023-12-03 15:14:44.747000             🧑  作者: Mango
Django-Taggit 是一个 Django 应用程序,可以轻松地将标签添加到任何模型中。
安装最新版本的 Django-Taggit 可以使用 pip:
pip install django-taggit
将 django_taggit 添加到 INSTALLED_APPS:
INSTALLED_APPS = [
# ...
'taggit',
]
在模型中添加标签字段:
from django.db import models
from taggit.managers import TaggableManager
class MyModel(models.Model):
tags = TaggableManager()
然后可以像访问普通字段一样访问标签字段:
>>> from myapp.models import MyModel
>>> obj = MyModel.objects.create(name="test")
>>> obj.tags.add("tag1", "tag2")
>>> obj.tags.all()
<QuerySet [<Tag: tag1>, <Tag: tag2>]>
Django-Taggit 默认提供了一些标签渲染器,但您可以轻松自定义它们以适应您的需求。
例如,要为标签字段使用 Bootstrap 标记,请创建一个自定义标签渲染器并将其用作标签字段的 render函数参数:
from taggit.utils import edit_string_for_tags
from django.template import Library
register = Library()
@register.filter
def bootstrap_tags(tags):
tags_html = []
for tag in tags:
tags_html.append(f'<span class="badge badge-primary">{tag.name}</span>')
return " ".join(tags_html)
@register.simple_tag
def bootstrap_tags_input(field_name, value):
render_value = edit_string_for_tags(value)
return f'<input type="text" class="form-control" name="{field_name}" value="{render_value}">'
然后在模板中可以像这样显示标签:
{% load taggit_extras %}
{{ obj.tags|bootstrap_tags }}
并使用自定义标签渲染器的表单字段:
{% load taggit_extras %}
{{ form.tags|bootstrap_tags_input }}
Django-Taggit 是一个功能强大且易于使用的 Django 应用程序,可以使标记在 Django 模型中变得非常简单。 它还提供了自定义标签渲染器的功能,可以很容易地自定义标签外观和行为。