我有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南部移民:
^{pr2}$当执行此迁移时,我得到错误:
AddGeometryColumn() error: "duplicate column name: geoposition"
CreateSpatialIndex() error: either "company_address"."geoposition" isn't a Geometry column or a SpatialIndex is already defined
我已经没有主意了,不知道怎么解决这个问题。在
软件:
数据库的地理元数据已初始化:
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',
}
但我需要一切都能很好地适应迁移。你知道是什么导致了这个问题吗?在
在代码中,传统的alter table语句不能处理空间字段,它试图创建一个“None”列,然后使用
AddGeometryColumn
命令正确地创建它。但是,South似乎没有得到提示,因此,AddGeometryColumn
失败,因为列已经存在。在仍在努力寻找答案,但我希望它只是升级到更新的版本。我会通知你的!在
Django source
你试图重写一个现有的模型字段,在我看来,你必须对基类进行monkey-patch才能使其生效。在
像这样的东西应该能起作用
我不确定south是否会接受这个,所以您可能需要一个新的syncdb或手动更改。在
相关问题 更多 >
编程相关推荐