Как включить параметр URL для подробного просмотра - PullRequest
0 голосов
/ 05 августа 2020

Я использую Django Rest Framework

Мои модели:

class Blog(models.Model):
    title = models.CharField(max_length=500, null=False, default='', blank=True)
    slug = models.CharField(max_length=200, unique=True)
    html_text = RichTextUploadingField(null=False, default='', blank=True)
    author = models.ForeignKey('users.BlogAuthor', on_delete=CASCADE, null=False)
    category = models.ForeignKey('blogs.BlogCategory')
    img_main = models.ImageField(upload_to='blogs/')
    img_main_alt_text = models.TextField(blank=True, default='')
    created = models.DateTimeField(auto_now=True)
    posted = models.DateTimeField(null=True, blank=True)


class BlogCategory(models.Model):
    name = models.CharField(max_length=100, null=False)

    def __str__(self):
        return self.name

Просмотр:

class BlogsAPIView(
        mixins.RetrieveModelMixin,
        mixins.ListModelMixin,
        viewsets.GenericViewSet):
    permission_classes = (AllowAny,)
    pagination_class = LimitOffsetPagination
    serializer_class = BlogSerializer
    lookup_field = 'slug'
    filter_backends = [django_filters.rest_framework.DjangoFilterBackend]
    filterset_fields = ('categories',)
    text_search_fields = ['title']

    def get_queryset(self):
        ....

Маршрутизаторы:

router.register('blogs', BlogsAPIView, basename='blogs')

Теперь я получаю весь список сообщений из:

/api/v1/blogs

и отдельное сообщение из:

/api/v1/blogs/some-slug

Как я могу изменить URL-адрес для одного сообщения (подробный URL), чтобы он был вот так:

/api/v1/blogs/category/some-slug

Где категория - это строка, взятая из BlogCategory.name соответствующего поля

спасибо

...