SQL để loại bỏ các ràng buộc:
ALTER TABLE myapp_mymodel DROP CONSTRAINT enforce_geotype_mygeom;
Hoặc để thay đổi nó để cho phép cả Đa giác & MultiPolygons:
ALTER TABLE myapp_mymodel DROP CONSTRAINT enforce_geotype_mygeom;
ALTER TABLE myapp_mymodel ADD CONSTRAINT enforce_geotype_mygeom CHECK (geometrytype(mygeom) = 'POLYGON'::text OR geometrytype(mygeom) = 'MULTIPOLYGON'::text OR mygeom IS NULL);
Các câu lệnh SQL này có thể được chạy từ di chuyển miền Nam hoặc tập lệnh SQL dữ liệu ban đầu .
Một tùy chọn khác là biến nó thành GeometryField
định nghĩa mô hình Django của bạn - điều này sẽ cho phép nó lưu trữ bất kỳ loại hình học nào.
Hoặc, ghi đè save()
phương thức trên mô hình của bạn để buộc mọi thứ phải là MultiPolygon:
from django.contrib.gis.db import models
from django.contrib.gis import geos
class MyModel(models.Model):
mygeom = models.MultiPolygonField()
... other fields....
def save(self, *args, **kwargs):
# if mygeom ends up as a Polgon, make it into a MultiPolygon
if self.mygeom and isinstance(self.mygeom, geos.Polygon):
self.mygeom = geos.MultiPolygon(self.mygeom)
super(MyModel).save(*args, **kwargs)