diff options
Diffstat (limited to 'django')
| -rw-r--r-- | django/contrib/gis/db/models/sql/conversion.py | 6 |
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}) |
