Настройка набора представлений для получения идентификатора элемента из slug и uuid Django Rest Framework

Я хочу получить каждый отдельный элемент из моей базы данных по id, сочетающему в себе slug и uuid. В моей модели у меня есть:

class Product(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    slug = models.SlugField(max_length=250, unique_for_date='published')
    name = models.CharField(max_length=250)

    def get_absolute_url(self):
        return reverse('name-of-the-view', kwargs={'uuid': self.id, 'slug': self.slug})

В моем представлении я использую ModelViewSet:

class ProductList(viewsets.ModelViewSet):
    queryset = Product.objects.all()
    serializer_class = ProductSerializer

    def get_object(self, queryset=None, **kwargs):
        item = self.kwargs.get('pk')
        return generics.get_object_or_404(Product, id=item)

    def get_queryset(self):
        return Product.objects.all()

В моих урлах я использую маршрутизатор:

from rest_framework.routers import DefaultRouter
from .views import ProductList

app_name = 'products'

router = DefaultRouter()
router.register('', ProductList, basename='product')
urlpatterns = router.urls

Как настроить его так, чтобы я мог получать не только self.kwargs.get('pk'), но и slug из ссылки.

Я имею в виду, что я хочу иметь ссылки на каждый iteam следующим образом: "item-name-25b6e133" и "item-name-11ac4431", где первая часть - slug, а вторая - uuid. Slug должен быть автоматически создан из поля name POST запросом.

При использовании пути это будет выглядеть следующим образом:

urlpatterns = [
    path('<slug:slug>-<uuid:uuid>/', some_view, name='name-of-the-view'),
]
Вернуться на верх