Добавление функциональности тегирования
Очень распространенной функциональностью в блогах является категоризация постов посредством тегов. Теги позволяют классифицировать контент неиерархическим образом, используя простые ключевые слова.
Тег – это просто метка или ключевое слово, которое можно назначать постам. Мы создадим систему тегирования, интегрировав в проект стороннее приложение Django по тегированию.
django-taggit – это приспособленное для использования приложение, которое в первую очередь предлагает модель Tag и менеджер для удобного добавления тегов в любую модель. Мы уже использовали ее у блога на функциях, в разделе 6.6 "Добавление функциональности тегирования".
Для начала установим приложение django-taggit с помощью pip, выполнив команду:
pip install django-taggit
Затем откроем файл настроек settings.py и добавим taggit в настроечный параметр INSTALLED_APPS, как показано ниже:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog.apps.BlogConfig',
'taggit',
]
После этого откроем файл models.py приложения blog и добавим, предоставляемый приложением django-taggit, менеджер TaggableManager в модель Post:
from taggit.managers import TaggableManager
class Post(models.Model):
# поля модели и менеджеры
tags = TaggableManager()
# мета класс и методы модели
Менеджер tags позволит добавлять, извлекать и удалять теги из объектов Post.
Выполним миграции, чтобы создать необходимые таблицы базы данных для моделей приложения django-taggit и синхронизировать изменения в своей модели:
python manage.py makemigrations
python manage.py migrate
Запустим сервер и проверим любую запись в админ панели:
Мы видим что у наших записей появилось новое поле для ввода тегов через запятую.
В следующем шаге мы добавим представления для вывода записей по тегу.