summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
Diffstat (limited to 'django')
-rw-r--r--django/contrib/gis/db/models/sql/conversion.py6
1 files changed, 6 insertions, 0 deletions
diff --git a/django/contrib/gis/db/models/sql/conversion.py b/django/contrib/gis/db/models/sql/conversion.py
index afc1053790..acc277ed62 100644
--- a/django/contrib/gis/db/models/sql/conversion.py
+++ b/django/contrib/gis/db/models/sql/conversion.py
@@ -4,6 +4,8 @@ database.
"""
from __future__ import unicode_literals
+from decimal import Decimal
+
from django.contrib.gis.db.models.fields import GeoSelectFormatMixin
from django.contrib.gis.geometry.backend import Geometry
from django.contrib.gis.measure import Area, Distance
@@ -27,6 +29,10 @@ class AreaField(BaseField):
def from_db_value(self, value, expression, connection, context):
if connection.features.interprets_empty_strings_as_nulls and value == '':
value = None
+ # If the database returns a Decimal, convert it to a float as expected
+ # by the Python geometric objects.
+ if isinstance(value, Decimal):
+ value = float(value)
# If the units are known, convert value into area measure.
if value is not None and self.area_att:
value = Area(**{self.area_att: value})