From 6ec60227b4af4e80483b437f86af3594fb4a484e Mon Sep 17 00:00:00 2001 From: Pablo Moreno Date: Sat, 18 May 2024 13:41:02 +0200 Subject: [PATCH] feat: added product filters --- shop/api/v1/filters.py | 17 +++++++++++++++++ shop/api/v1/viewsets.py | 2 ++ 2 files changed, 19 insertions(+) create mode 100644 shop/api/v1/filters.py diff --git a/shop/api/v1/filters.py b/shop/api/v1/filters.py new file mode 100644 index 0000000..7092fec --- /dev/null +++ b/shop/api/v1/filters.py @@ -0,0 +1,17 @@ +from django.utils.text import gettext_lazy as _ +import django_filters + +from shop.models import Product + + +class ProductFilter(django_filters.FilterSet): + tags = django_filters.BaseInFilter(field_name='tags', label=_('Etiquetas')) + + class Meta: + model = Product + fields = ( + "name", + "stock", + "is_digital_asset", + "tags", + ) diff --git a/shop/api/v1/viewsets.py b/shop/api/v1/viewsets.py index d7ad35e..c1e91d8 100644 --- a/shop/api/v1/viewsets.py +++ b/shop/api/v1/viewsets.py @@ -9,6 +9,7 @@ from rest_framework.viewsets import ModelViewSet from rest_framework.exceptions import ValidationError from rest_framework.permissions import IsAdminUser +from shop.api.v1.filters import ProductFilter from shop.api.v1.serializers import ( ProductSerializer, ProductPriceSerializer, @@ -46,6 +47,7 @@ class ProductViewSet(ModelViewSet): ProductPermissions, ) search_fields = ('name', ) + filterset_class = ProductFilter def get_serializer_class(self): if self.action == "create":