almost finished with the addresses

This commit is contained in:
arvinbehbahani562@gmail.com
2026-05-13 05:07:13 +03:30
parent cf99039c8d
commit 73cefcdeb8
16 changed files with 2928 additions and 5 deletions
View File
+34
View File
@@ -0,0 +1,34 @@
from rest_framework import serializers
from ..models import Address, City, Province
class ProvinceSerializer(serializers.ModelSerializer):
class Meta:
model = Province
fields = ["province_id", "province_name"]
class CitySerializer(serializers.ModelSerializer):
province_id = serializers.CharField(source="province.province_id")
class Meta:
model = City
fields = ["city_local_id", "city_name", "province_id"]
class AddressSerializer(serializers.ModelSerializer):
province_name = serializers.CharField(source="province.province_name", read_only=True)
city_name = serializers.CharField(source="city.city_name", read_only=True)
class Meta:
model = Address
fields = ["province", "province_name", "city", "city_name", "postal_code", "address_detail", "user", "created_at", "updated_at"]
read_only_fields = ["user", "province_name", "city_name", "created_at", "updated_at"]
def to_representation(self, instance):
rep = super().to_representation(instance)
request = self.context.get("request")
if not request.parser_context.get("kwargs"):
rep.pop("province_name")
rep.pop("city_name")
rep.pop("created_at")
rep.pop("updated_at")
return rep
+15
View File
@@ -0,0 +1,15 @@
from django.urls import path
from rest_framework.routers import DefaultRouter
from . import views
app_name = "address-api-urls"
router = DefaultRouter()
router.register("", views.AddressViewSet, basename="address-viewset")
urlpatterns = [
path("province/", views.ProvinceListAPIView.as_view(), name="get-provinces"),
path("province/<int:province_pk>/cities/", views.CityListAPIView.as_view(), name="get-cities")
]
urlpatterns += router.urls
+36
View File
@@ -0,0 +1,36 @@
from rest_framework.generics import ListAPIView
from rest_framework import viewsets
from rest_framework.permissions import IsAuthenticated
from . import serializers
from ..models import Province, City, Address
class ProvinceListAPIView(ListAPIView):
serializer_class = serializers.ProvinceSerializer
queryset = Province.objects.all()
# def get(self, request, *args, **kwargs):
# return Response()
class CityListAPIView(ListAPIView):
serializer_class = serializers.CitySerializer
def get_queryset(self):
province_id = self.kwargs["province_pk"]
return City.objects.filter(province_id=province_id)
class AddressViewSet(viewsets.ModelViewSet):
permission_classes = [IsAuthenticated,]
serializer_class = serializers.AddressSerializer
def get_queryset(self):
user_id = self.request.user.id
return Address.objects.filter(user_id=user_id)
def perform_create(self, serializer):
serializer.save(
user_id=self.request.user.id
)
return super().perform_create(serializer)