@Doomplex

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

Создаю модель для блога, использую библиотеку django-taggit для формирования меток у статей, все устраивает, только при создании новой метки, по умолчанию разрешен unicode, поэтому когда создаю метку на кириллице, slug в БД тоже записывается кириллицей, надо все транслитом. В документации не нашел как отключить, может кто-то сталкивался?

Mоя модель:

class Post(models.Model):
    .......
    tags = TaggableManager()


Модель тегов библиотеки:

class TagBase(models.Model):
    name = models.CharField(
        verbose_name=pgettext_lazy("A tag name", "name"), unique=True, max_length=100
    )
    slug = models.SlugField(
        verbose_name=pgettext_lazy("A tag slug", "slug"),
        unique=True,
        max_length=100,
        allow_unicode=True,
    )


Необходимо заменить
slug = models.SlugField(allow_unicode=False)
  • Вопрос задан
  • 238 просмотров
Пригласить эксперта
Ответы на вопрос 1
AliBlogger
@AliBlogger
Fullstack developer
Столкнулся с такой же проблемой. Хорошенько загуглив, нашел решение:

После установки taggit, нужно добавить в settings.py дополнительную настройку:

TAGGIT_STRIP_UNICODE_WHEN_SLUGIFYING = True

Этим самым мы форсируем принудительную конвертацию unicode символов (кириллица) в ASCII символы (латиница).

2) Устанавливаем дополнительно модуль Unidecode:

pip install unidecode

С его помощью мы сможем осуществлять конвертацию символов.

3) Чтобы всë заработало, не забываем добавить в файле моделей нашего приложения, где описываем поле для TaggableManager(), следующий импорт:

from unidecode import unidecode

Всё! Пробуем добавить новые теги.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы