Django Rest Framework: следует ли использовать URL-ярлыки или параметры запроса для перечисления элементов определенной категории c? - PullRequest
0 голосов
/ 26 мая 2020

Прямо сейчас у меня есть вид, который позволяет мне:

  1. Список всех продуктов на: www.example.com/api/products
  2. Получить подробную информацию об одном продукте на: www.example.com/api/products/5

Проблема в том, что в мобильном приложении продукты будут видны только тогда, когда вы находитесь внутри категории и подкатегории.

Модель продукта выглядит примерно так:

class Product(models.Model):
    name = models.CharField(max_length=255)
    description = models.TextField()
    image = models.CharField(max_length=255)
    category = models.ForeignKey(ProductCategory, related_name='products', on_delete=models.CASCADE)
    subcategory = models.ForeignKey(ProductSubcategory, related_name='products', on_delete=models.CASCADE)

А Viewset продукта выглядит так:

class RoutineViewSet(mixins.ListModelMixin,
                     mixins.RetrieveModelMixin,
                     viewsets.GenericViewSet):

    queryset = models.Product.objects.all()   

    def get_serializer_class(self):
        if self.action == 'list':
            return serializers.ProductListSerializer
        else:
            return serializers.ProductDetailSerializer

Должен ли я использовать слаг или идентификатор в конечной точке для получения элементов?

www.example.com/api/products/category/food/subcategory/snacks
www.example.com/api/products/category/2/subcategory/3

Или мне следует использовать параметры запроса?

www.example.com/api/products/?category=2,subcategory=3

Мой инстинкт подсказывает мне, что проще всего было бы использовать параметры запроса и перезаписать метод get_queryset для получения различных продуктов в зависимости от параметров запроса. Но я не уверен, что это стандартный способ сделать что-то вроде этого.

Спасибо

1 Ответ

0 голосов
/ 26 мая 2020

вы должны определить подкатегорию @action в вашем представлении с detail = True

...