@ilya_chch

Как использовать UUID в url без тире?

Использую в некоторых моделях UUIDField как первичный ключ, наследуясь от такой вот модели:
class UuidBasedModel(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)

    class Meta:
        abstract = True

URLconfig:
urlpatterns = [
    ...
    path('<pk>/', views.TrainingView.as_view(), name='training_page'),
    ....
]

В URL-ы на все ссылки вставляется в виде 6e0d44f9-7295-4e17-b2d4-9e8a61851c33. Хотелось бы, чтобы было в формате 6e0d44f972954e17b2d49e8a61851c33.
В документации по URL dispatcher про UUID сказано только, что он есть.

Есть ли способы как-то настроить этот момент?
  • Вопрос задан
  • 892 просмотра
Решения вопроса 1
@ilya_chch Автор вопроса
решил вопрос через
force_str(urlsafe_base64_encode(force_bytes(uuid)))


и обратно в uuid:
force_str(urlsafe_base64_decode(encoded_uid))
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
dimonchik2013
@dimonchik2013
non progredi est regredi
uuid.uuid4().hex
Ответ написан
Комментировать
@FulTupFul
def get_default_as_uuid():
    return str(uuid.uuid4()).replace('-', '')

******************
 uuid = models.CharField(max_length=62, default=get_default_as_uuid)
******************
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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