summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Apolloner <florian@apolloner.eu>2014-08-10 16:24:19 +0200
committerFlorian Apolloner <florian@apolloner.eu>2014-08-10 16:24:19 +0200
commitf915d39afe3565ac2355de57c11843530b96f3bc (patch)
tree9565dcfeee7b4e6eab9c808262044f18bfbc8a29
parent61d783f3d7c9d4c7a0ac05f7fbbaba78e5cef5aa (diff)
Fixed remove_field for spatialite schema changes.
-rw-r--r--django/contrib/gis/db/backends/spatialite/schema.py12
1 files changed, 12 insertions, 0 deletions
diff --git a/django/contrib/gis/db/backends/spatialite/schema.py b/django/contrib/gis/db/backends/spatialite/schema.py
index 6d3ad3e6b7..18b480d76c 100644
--- a/django/contrib/gis/db/backends/spatialite/schema.py
+++ b/django/contrib/gis/db/backends/spatialite/schema.py
@@ -101,6 +101,18 @@ class SpatialiteSchemaEditor(DatabaseSchemaEditor):
else:
super(SpatialiteSchemaEditor, self).add_field(model, field)
+ def remove_field(self, model, field):
+ from django.contrib.gis.db.models.fields import GeometryField
+ # NOTE: If the field is a geometry field, the table is just recreated,
+ # the parent's remove_field can't be used cause it will skip the
+ # recreation if the field does not have a database type. Geometry fields
+ # do not have a db type cause they are added and removed via stored
+ # procedures.
+ if isinstance(field, GeometryField):
+ self._remake_table(model, delete_fields=[field])
+ else:
+ super(SpatialiteSchemaEditor, self).remove_field(model, field)
+
def alter_db_table(self, model, old_db_table, new_db_table):
from django.contrib.gis.db.models.fields import GeometryField
# Remove geometry-ness from temp table