“值错误:无法将类型为int的对象用于空间查找参数”

时间:2019-07-17 09:20:24

标签: python-3.x postgis django-2.2

在我的一个模型中添加了一个Point字段以加载map.to迁移模型中的更改,在pycharm终端python manage.py makemigrations中运行良好。但是python manage.py migration会引发ValueError(“无法将类型为%s的对象用于空间查找参数。”%type(obj)。名称

我认为原因可能是Django 2.2中的更改。我什至尝试使用MultiPolygon字段PointField。

settings.py

CORE_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.sites',
    'django.contrib.postgres',
    'django.contrib.gis'
]

DATABASES = {
    'default': {
        'ENGINE': 'django.contrib.gis.db.backends.postgis',

models.py

from django.contrib.gis.db import models

longitude = models.FloatField("Outlet Longitude", default=0.0, blank=False, help_text="Longitude")
    latitude = models.FloatField("Outlet Latitude", default=0.0, blank=False, help_text="Latitude")
    location = models.PointField()

我只想加载地图。

2 个答案:

答案 0 :(得分:0)

要使用postgis加载地图,您可以执行以下操作:

from django.contrib.gis.db import models as gis_models

location = gis_models.PointField(
        "Location in Map", geography=True, blank=True, null=True,
        srid=4326, help_text="Point(longitude latitude)")

建议:从其他应用程序导入模型时,请尝试使用适当的别名

答案 1 :(得分:0)

在我的情况下,我输入元组值作为默认值是一个问题,所以发生了错误。

  1. 删除模型的迁移文件夹中的迁移信息。
  2. 按如下所示设置默认值。
from django.contrib.gis.geos import Point
location = gis_models.PointField(default=Point(0, 0), blank=True)
  1. python manage.py makemigrations
  2. python manage.py migration