📜  django-taggit (1)

📅  最后修改于: 2023-12-03 15:14:44.747000             🧑  作者: Mango

Django-Taggit

Django-Taggit 是一个 Django 应用程序,可以轻松地将标签添加到任何模型中。

特点
  • 使用简单,易于使用。
  • 与 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 模型中变得非常简单。 它还提供了自定义标签渲染器的功能,可以很容易地自定义标签外观和行为。