0

我可以makemigrations,但不能migrate架构。

django-geoposition==0.3.0
django==1.11.5
python3.6.2
x86_64-apple-darwin14.5.0 上的 PostgreSQL 9.6.5,由 Apple LLVM 版本 7.0.0 (clang-700.1.76) 编译,64 位

import environ
env = environ.Env()

...
DATABASES = {
    'default': env.db("DATABASE_URL", default="postgres://postgres:postgres@localhost:5432/soken_web")
}
DATABASES['default']['ATOMIC_REQUESTS'] = True
DATABASES['default']['ENGINE'] = 'django.contrib.gis.db.backends.postgis'
GEOPOSITION_GOOGLE_MAPS_API_KEY = '<API_KEY>'
GEOPOSITION_MAP_OPTIONS = {
    'minZoom': 3,
    'maxZoom': 15,
}

GEOPOSITION_MARKER_OPTIONS = {
    'cursor': 'move'
}


INSTALLED_APPS = [
    ...
    'geoposition',
]
from django.contrib.gis.db import models
from geoposition.fields import GeopositionField


class House(models.Model):
    ...
    location = GeopositionField()

问题:

django.db.utils.ProgrammingError: data type character varying has no default operator class for access method "gist"
HINT:  You must specify an operator class for the index or define a default operator class for the data type.

参考资料:
Django django-location-field 缺少 API Keys
https://github.com/caioariede/django-location-field

4

1 回答 1

1

如果您使用的是 postgres,您可能需要按照文档中的说明安装 gist 模块:

https://www.postgresql.org/docs/9.2/static/btree-gist.html

您可以使用 btree_gist 扩展来定义纯标量数据类型的排除约束,然后可以将其与范围排除相结合以获得最大的灵活性。例如,安装 btree_gist 后,仅当会议室编号相等时,以下约束才会拒绝重叠范围:

于 2017-09-18T09:10:57.337 回答