Как использовать uuid в качестве первичного ключа и slug для url в Django App?

Я определил uuid как первичный ключ для моей модели и url.

Теперь мы хотим использовать slug в url, но у нас производственная база данных, и объекты используют свой uuid в качестве id.

Вместо того, чтобы изменять тип базы данных для первичного ключа (postgres), возможно ли сохранить первичный ключ как uuid и использовать slug для url?

model.py

class Article(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    slug = models.SlugField(null=True)

urls.py

urlpatterns = [
    path("", Article.as_view(), name="article_list"),
    path("<slug:slug>", ArticleDetail.as_view(), name="article_detail"),
]

шаблон

<a href="{% url 'articles:article_detail' article.slug %}">{{article.title}}</a>

Эти конфигурации выдают мне ошибку ValidationError с [''my-slug'' is not valid UUID.'']

Спасибо

Вернуться на верх