बाधा को छोड़ने के लिए एसक्यूएल:
ALTER TABLE myapp_mymodel DROP CONSTRAINT enforce_geotype_mygeom;
या इसे पॉलीगोन और मल्टीपॉलीगोन दोनों की अनुमति देने के लिए बदल दें:
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);
ये SQL स्टेटमेंट साउथ माइग्रेशन या एक प्रारंभिक-डेटा SQL स्क्रिप्ट से चलाए जा सकते हैं ।
एक अन्य विकल्प इसे GeometryField
अपने Django मॉडल परिभाषा में बनाना है - यह इसे किसी भी ज्यामिति प्रकार को संग्रहीत करने की अनुमति देगा।
या, save()
अपने मॉडल पर मल्टीप्रोलीगन होने के लिए सब कुछ करने के लिए मजबूर करने की विधि को ओवरराइड करें :
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)