Django Taggit

django-taggit предоставляет простую и гибкую систему тегов для Django моделей.

Установка

1# Установка пакета
2pip install django-taggit
1# Или через Poetry
2poetry add django-taggit

Настройка

1# settings.py
2INSTALLED_APPS = [
3    'taggit',
4]

Использование в моделях

1from taggit.managers import TaggableManager
2
3class Article(models.Model):
4    title = models.CharField(max_length=200)
5    content = models.TextField()
6    tags = TaggableManager()

Работа с тегами

 1# Добавление тегов
 2article = Article.objects.create(title="Test Article")
 3article.tags.add("python", "django", "web")
 4
 5# Поиск по тегам
 6articles = Article.objects.filter(tags__name__in=["python"])
 7
 8# Получение всех тегов
 9all_tags = Article.tags.all()
10
11# Похожие статьи по тегам
12similar_articles = article.tags.similar_objects()

Кастомизация тегов

1from taggit.models import Tag
2
3class CustomTag(Tag):
4    description = models.TextField(blank=True)
5    color = models.CharField(max_length=7, default="#000000")
6
7# В настройках
8TAGGIT_TAG_MODEL = 'myapp.CustomTag'

FAQ

Q: Как показать похожие статьи?
A: Используй similar_objects() метод для поиска по схожим тегам.

Q: Можно ли кастомизировать модель тега?
A: Да, создай свою модель и укажи её в TAGGIT_TAG_MODEL.