REST_FRAMEWORK = {
"DEFAULT_FILTER_BACKENDS": ["django_filters.rest_framework.DjangoFilterBackend"],
}
class ProductListAPIView(generics.ListAPIView):
serializer_class = ProductSerializer
filterset_class = ProductFilter
def get_queryset(self):
return ProductService().get_products()
def get(self, request, *args, **kwargs):
response = super().get(request, *args, **kwargs)
return send_response(
data=response.data,
status_code=response.status_code,
message=ResponseMessages.DATA_FETCH_SUCCESS,
)
class ProductFilter(django_filters.FilterSet):
price_min = django_filters.NumberFilter(field_name="price", lookup_expr="gte")
price_max = django_filters.NumberFilter(field_name="price", lookup_expr="lte")
class Meta:
model = Product
fields = [
"brand",
"product_name",
"lens_category",
"price_min",
"price_max",
]
INSTALLED_APPS = [
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
"django.contrib.postgres",
"rest_framework",
"products",
"crispy_forms",
"django_filters",
"drf_yasg",
]
Django==4.2.4
django-crispy-forms==2.0
django-filter==23.2
djangorestframework==3.14.0