我有GeoDjango內置自定義字段:GeoDjango內置以南導致 「重複的列名錯誤」 與SpatiaLight的分貝
from django.contrib.gis.db import models as geomodels
class PointField(geomodels.PointField):
def formfield(self, **kwargs):
defaults = {
'form_class': CustomFormField
}
defaults.update(kwargs)
return super(PointField, self).formfield(**defaults)
try:
from south.modelsinspector import add_introspection_rules
from south.introspection_plugins.geodjango import rules
add_introspection_rules(rules, ["^project\.apps\.appname\.fields\.PointField"])
except ImportError:
pass
和Django的南遷:
class Migration(SchemaMigration):
def forwards(self, orm):
# Adding field 'Address.geoposition'
db.add_column('company_address', 'geoposition',
self.gf('project.apps.appname.fields.PointField')(srid=900913, geography=True),
keep_default=False)
def backwards(self, orm):
# Deleting field 'Address.geoposition'
db.delete_column('company_address', 'geoposition')
而當這種遷移我得到的錯誤:
AddGeometryColumn() error: "duplicate column name: geoposition"
CreateSpatialIndex() error: either "company_address"."geoposition" isn't a Geometry column or a SpatialIndex is already defined
我已經用完了我deas並且不知道如何解決這個問題。
軟件:
- 的Django 1.4
- SpatiaLight的3.0.1
- @中1.9.2
- 南0.7.6
對於DB地理元數據被inited:
subprocess.call(["spatialite", settings.DATABASES['default']['NAME'], "SELECT InitSpatialMetaData();"])
加入
和SRS項:
from django.contrib.gis.utils import add_srs_entry
add_srs_entry(900913)
當我禁用遷移我沒有錯誤。代碼禁用遷移:
SOUTH_MIGRATION_MODULES = {
'appname': 'ignore',
}
但我需要一切工作正常與遷移。任何想法是什麼導致這個問題?
不,我不是現有模型的首要領域。我在我的應用程序中有我自己的模型: class Company(models.Model):... geoposition = CustomPointField。這只是我在模型中使用的自定義字段。其他自定義字段沒有問題。 – imposeren 2013-02-16 20:17:19
我甚至嘗試使用默認字段: psss = geomodels.PointField(geography = True,blank = True,default ='Point(0 0)',srid = 900913)。導致相同的錯誤 – imposeren 2013-02-16 20:22:27