📜  在 Django 项目中使用 Django-Taggit 添加标签

📅  最后修改于: 2022-05-13 01:55:32.010000             🧑  作者: Mango

在 Django 项目中使用 Django-Taggit 添加标签

Django-Taggit 是一个 Django 应用程序,用于向博客、文章等添加标签。它使我们很容易将标签功能添加到我们的 django 项目中。
设置 Django 项目

  • 安装 django-taggit
pip install django-taggit
  • 将其添加到主项目的 settings.py 文件中
Python3
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.humanize',
    'taggit'
]


Python3
from django.db import models
from django.utils.timezone import now
from taggit.managers import TaggableManager
 
class Post(models.Model):
    postid = models.AutoField(primary_key=True)
    title = models.CharField(max_length=255)
    content = models.TextField()
    author = models.CharField(max_length=100)
    postauthor = models.ForeignKey(User, on_delete=models.CASCADE)
    slug = models.SlugField(unique=True)
    category = models.CharField(max_length=200)
    timestamp = models.DateTimeField(default=now, blank=True)
    tags = TaggableManager()


  • 对models.py文件的更改

在您的帖子、博客、文章模式中添加 TaggableManager

蟒蛇3

from django.db import models
from django.utils.timezone import now
from taggit.managers import TaggableManager
 
class Post(models.Model):
    postid = models.AutoField(primary_key=True)
    title = models.CharField(max_length=255)
    content = models.TextField()
    author = models.CharField(max_length=100)
    postauthor = models.ForeignKey(User, on_delete=models.CASCADE)
    slug = models.SlugField(unique=True)
    category = models.CharField(max_length=200)
    timestamp = models.DateTimeField(default=now, blank=True)
    tags = TaggableManager()

添加 TaggableManager 后,在终端中运行以下命令

  • Python manage.py makemigrations
    Python manage.py 迁移

TaggableManager 将自动显示为 post modal 中的一个字段

Taggit 模态也将在管理面板中自动显示为单独的模态

管理面板中的 Taggit 模态

添加标签

1) 如果标签输入不包含任何逗号或双引号,它将被视为以空格分隔的列表
标签名称。

geeks for geeks => "geeks", "for", "geeks"

2) 如果标签输入确实包含逗号或双引号,则:

a) geeks, geeks for geeks            =>   "geeks", "geeks for geeks" 
b) "geeks, forgeeks" geek geeksfor   =>   "geeks, forgeeks", "geek", "geeksfor"
c) "geeks, forgeeks", geek geeksfor  =>   "geeks, forgeeks", "geeks geeksfor"
d) geeks "for" geeks                 =>   "geeks", "for", "geeks"

将标签添加到帖子后,taggit 模式将如下所示:

与不同帖子相关联的所有标签都将出现在 taggit 下的标签模态中

单击特定标签后,将出现与该特定标签相关联的所有帖子的列表。现在这个模型可以像其他模型一样与项目一起使用