Как создать slug из неанглийских значений?

У меня есть модель Author с полями firstname, lastname. Я хочу добавить еще одно поле 'slug' которое будет содержать slug из конкатенации этих полей. Однако эти поля содержат неанглийские символы, а мне нужен английский slug для создания шаблона ссылки "localhost/authors/str::slug". Как я могу это реализовать?

Вы можете сначала преобразовать имя в латинские символы, используя trans.

pip install trans

from trans import trans
from django.utils.text import slugify

author_slug = slugify( trans(first_name + " " + last_name) )

Или, если вы не возражаете против таких символов, как: %20, %C3 вы можете использовать

from urllib.parse import quote
author_slug = slugify( quote(first_name + " " + last_name) )

Для решения этой проблемы вы можете использовать unidecode и slugify.
Вы должны установить его с помощью pip install unidecode

from unidecode import unidecode
from django.template import defaultfilters
slug = defaultfilters.slugify(unidecode(input_text))

пример:

import unidecode
a = unidecode.unidecode('привет')
the answer will be ('privet') #this is just an example in russian.
and after that you can apply slugify
Вернуться на верх