from rest_framework import serializers from location import models class CountrySerializer(serializers.ModelSerializer): """Country serializer.""" class Meta: model = models.Country fields = [ 'id', 'name' ] class RegionSerializer(serializers.ModelSerializer): """Region serializer""" country = CountrySerializer() class Meta: model = models.Region fields = [ 'id', 'name', 'code', 'parent_region', 'country' ] class CitySerializer(serializers.ModelSerializer): """City serializer.""" country = CountrySerializer() region = RegionSerializer() class Meta: model = models.City fields = [ 'id', 'name', 'code', 'region', 'country', 'postal_code', 'is_island', ] class AddressSerializer(serializers.ModelSerializer): """Address serializer.""" city = CitySerializer() longitude = serializers.DecimalField(max_digits=10, decimal_places=6) latitude = serializers.DecimalField(max_digits=10, decimal_places=6) class Meta: model = models.Address fields = [ 'city', 'street_name_1', 'street_name_2', 'number', 'postal_code', 'longitude', 'latitude' ] # def validate(self, attrs): # geo_lat = attrs.pop('geo_lat') if 'geo_lat' in attrs else None # geo_lon = attrs.pop('geo_lon') if 'geo_lon' in attrs else None # if geo_lat and geo_lon: # # Point(longitude, latitude) # attrs['coordinates'] = Point(geo_lon, geo_lat) # return attrs