From 2999d4bdabf3e21797db3e6eaffcb9a8b138e02b Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Thu, 7 Aug 2025 15:17:29 +0500 Subject: [PATCH] add district api view --- core/apps/shared/serializers/region.py | 7 +++---- core/apps/shared/urls.py | 1 + core/apps/shared/views/region.py | 25 ++++++++++++++++++++----- 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/core/apps/shared/serializers/region.py b/core/apps/shared/serializers/region.py index 00f9479..991d19c 100644 --- a/core/apps/shared/serializers/region.py +++ b/core/apps/shared/serializers/region.py @@ -10,10 +10,9 @@ class DistrictListSerializer(serializers.ModelSerializer): class RegionListSerializer(serializers.ModelSerializer): - districts = DistrictListSerializer(many=True) - class Meta: model = Region fields = [ - 'id', 'name', 'districts' - ] \ No newline at end of file + 'id', 'name', + ] + diff --git a/core/apps/shared/urls.py b/core/apps/shared/urls.py index 308a978..1159d48 100644 --- a/core/apps/shared/urls.py +++ b/core/apps/shared/urls.py @@ -4,4 +4,5 @@ from core.apps.shared.views import region as region_views urlpatterns = [ path('region/list/', region_views.RegionListApiView.as_view()), + path('region//districts/', region_views.DistrictListApiView.as_view()), ] \ No newline at end of file diff --git a/core/apps/shared/views/region.py b/core/apps/shared/views/region.py index e2850df..93337ee 100644 --- a/core/apps/shared/views/region.py +++ b/core/apps/shared/views/region.py @@ -1,13 +1,28 @@ -from rest_framework import generics +from django.shortcuts import get_object_or_404 -from core.apps.shared.serializers.region import RegionListSerializer -from core.apps.shared.models import Region +from rest_framework import generics, views +from rest_framework.response import Response + +from core.apps.shared.serializers.region import RegionListSerializer, DistrictListSerializer +from core.apps.shared.models import Region, District from core.apps.accounts.permissions.permissions import HasRolePermission class RegionListApiView(generics.ListAPIView): permission_classes = [HasRolePermission] - queryset = Region.objects.prefetch_related('districts') + queryset = Region.objects.all() serializer_class = RegionListSerializer - required_permissions = ['project', 'project_folder'] \ No newline at end of file + required_permissions = ['project', 'project_folder'] + pagination_class = None + + +class DistrictListApiView(views.APIView): + permission_classes = [HasRolePermission] + required_permissions = ['project', 'project_folder'] + + def get(self, request, id): + region = get_object_or_404(Region, id=id) + districts = District.objects.filter(region=region) + serializer = DistrictListSerializer(districts, many=True) + return Response(serializer.data, status=200) \ No newline at end of file