diff --git a/.vscode/PythonImportHelper-v2-Completion.json b/.vscode/PythonImportHelper-v2-Completion.json index 196882a..65a6811 100644 --- a/.vscode/PythonImportHelper-v2-Completion.json +++ b/.vscode/PythonImportHelper-v2-Completion.json @@ -506,11 +506,12 @@ "documentation": {} }, { - "label": "DjangoFilterBackend", - "importPath": "django_filters.rest_framework", - "description": "django_filters.rest_framework", + "label": "django_filters", + "kind": 6, "isExtraImport": true, - "detail": "django_filters.rest_framework", + "importPath": "django_filters", + "description": "django_filters", + "detail": "django_filters", "documentation": {} }, { @@ -1094,7 +1095,25 @@ "kind": 6, "importPath": "back.object.views", "description": "back.object.views", - "peekOfCode": "class ClickableAreaViewSet(viewsets.ModelViewSet):\n queryset = ClickableArea.objects.all()\n serializer_class = ClickableAreaSerializer\nclass Element3DViewSet(viewsets.ModelViewSet):\n queryset = Element3D.objects.all()\n serializer_class = Element3DSerializer\n filterset_fields = ('parent', )\n filter_backends = [DjangoFilterBackend]", + "peekOfCode": "class ClickableAreaViewSet(viewsets.ModelViewSet):\n queryset = ClickableArea.objects.all()\n serializer_class = ClickableAreaSerializer\nclass NumberInFilter(django_filters.BaseInFilter, django_filters.NumberFilter):\n pass\nclass Element3DFilter(django_filters.rest_framework.FilterSet):\n parent = NumberInFilter(\n field_name=\"parent\",\n lookup_expr=\"in\",\n )", + "detail": "back.object.views", + "documentation": {} + }, + { + "label": "NumberInFilter", + "kind": 6, + "importPath": "back.object.views", + "description": "back.object.views", + "peekOfCode": "class NumberInFilter(django_filters.BaseInFilter, django_filters.NumberFilter):\n pass\nclass Element3DFilter(django_filters.rest_framework.FilterSet):\n parent = NumberInFilter(\n field_name=\"parent\",\n lookup_expr=\"in\",\n )\n parent__isnull = django_filters.BooleanFilter(\n field_name=\"parent\",\n lookup_expr=\"isnull\",", + "detail": "back.object.views", + "documentation": {} + }, + { + "label": "Element3DFilter", + "kind": 6, + "importPath": "back.object.views", + "description": "back.object.views", + "peekOfCode": "class Element3DFilter(django_filters.rest_framework.FilterSet):\n parent = NumberInFilter(\n field_name=\"parent\",\n lookup_expr=\"in\",\n )\n parent__isnull = django_filters.BooleanFilter(\n field_name=\"parent\",\n lookup_expr=\"isnull\",\n )\nclass Element3DViewSet(viewsets.ModelViewSet):", "detail": "back.object.views", "documentation": {} }, @@ -1103,7 +1122,7 @@ "kind": 6, "importPath": "back.object.views", "description": "back.object.views", - "peekOfCode": "class Element3DViewSet(viewsets.ModelViewSet):\n queryset = Element3D.objects.all()\n serializer_class = Element3DSerializer\n filterset_fields = ('parent', )\n filter_backends = [DjangoFilterBackend]", + "peekOfCode": "class Element3DViewSet(viewsets.ModelViewSet):\n queryset = Element3D.objects.all()\n serializer_class = Element3DSerializer\n filterset_class = Element3DFilter", "detail": "back.object.views", "documentation": {} }, diff --git a/back/object/views.py b/back/object/views.py index d951c6a..59e23a2 100644 --- a/back/object/views.py +++ b/back/object/views.py @@ -1,16 +1,31 @@ from rest_framework import viewsets -from django_filters.rest_framework import DjangoFilterBackend +import django_filters + from .models import ClickableArea, Element3D from .serializers import ClickableAreaSerializer, Element3DSerializer + class ClickableAreaViewSet(viewsets.ModelViewSet): queryset = ClickableArea.objects.all() serializer_class = ClickableAreaSerializer - - + + +class NumberInFilter(django_filters.BaseInFilter, django_filters.NumberFilter): + pass + + +class Element3DFilter(django_filters.rest_framework.FilterSet): + parent = NumberInFilter( + field_name="parent", + lookup_expr="in", + ) + parent__isnull = django_filters.BooleanFilter( + field_name="parent", + lookup_expr="isnull", + ) + + class Element3DViewSet(viewsets.ModelViewSet): queryset = Element3D.objects.all() serializer_class = Element3DSerializer - - filterset_fields = ('parent', ) - filter_backends = [DjangoFilterBackend] \ No newline at end of file + filterset_class = Element3DFilter