geodjango のカスタム フィールドがあります。
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-South 移行:
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
アイデアが不足しており、これを修正する方法がわかりません。
ソフトウェア:
- ジャンゴ1.4
- 空間ライト 3.0.1
- gdal 1.9.2
- 南 0.7.6
データベースの地理的メタデータが開始されました:
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',
}
しかし、移行で問題なく動作するには、すべてが必要です。問題の原因は何ですか?