Как в библиотеке django-taggit при создании tags и формировании slug запретить использование unicode(кириллицы)?

В библиотеке django-taggit есть возможность настроить формирование slug'ов (уникальных идентификаторов) для тегов без использования символов unicode и кириллицы. Чтобы запретить использование unicode и кириллицы при формировании slug, можно использовать расширенные возможности Django в настройке моделей и поля taggit.

Первым шагом необходимо создать собственный класс для поля тегов в модели, чтобы переопределить метод формирования slug'ов. Для этого нужно создать новый файл с именем "fields.py" в директории вашего приложения Django (из которого вы хотите использовать django-taggit). В этом файле определите новый класс для поля тегов, который будет унаследован от TaggableManager из django-taggit:

# app_name/fields.py

from taggit.managers import TaggableManager

class CustomTaggableManager(TaggableManager):
    def tagify(self, tag_name):
        # Удалить все нежелательные символы из tag_name
        tag_name = ''.join(e for e in tag_name if e.isalnum() or e.isspace()) 
        return super().tagify(tag_name)

Вторым шагом необходимо зарегистрировать новый класс поля в файле модели, в котором вы хотите использовать теги. Добавьте следующую строку в начало файла модели:

# models.py

import taggit
from app_name.fields import CustomTaggableManager

taggit.Tag.field = CustomTaggableManager

После этих изменений django-taggit будет использовать ваше собственное поле тегов с переопределенным методом tagify, который будет удалять все нежелательные символы из тега перед его сохранением в базе данных. В данном случае мы используем метод isalnum для удаления всех символов, которые не являются буквами или цифрами.

Теперь при добавлении нового тега через django-taggit, все символы unicode и кириллица будут автоматически удалены из тега при формировании его slug'а.

Например, если вы попытаетесь добавить тег "пример" или "example" через django-taggit, то в базу данных будет сохранен только slug "example", без использования unicode и кириллицы.

Таким образом, с помощью настройки моделей и полей django-taggit вы можете легко изменить поведение библиотеки и запретить использование unicode и кириллицы в формировании slug'ов для тегов.