python - 在模型中包含 GeoDjango Point

标签 python postgresql geojson geodjango

我是第一次使用 GeoDjango,在向我的模型添加 PointField 时遇到了问题。这是我的模型代码:

from django.db import models
from django.contrib.gis.geos import Point
from django.contrib.gis.db import models

class Crime(models.Model):
    Category = models.CharField(max_length=50)
    Description = models.CharField(max_length=150)
    District =models.CharField(max_length=50)
    Incident = models.IntegerField(default=0)
    Date = models.DateTimeField(max_length=150,default="")
    Location = models.PointField()

当我尝试创建迁移时,出现错误:

ValueError: Cannot use object with type float for a geometry lookup parameter.

当我尝试在 Python shell 中创建犯罪对象并保存它时,出现错误:

django.core.exceptions.ValidationError

我已经解决这个问题很长时间了。我在实际的 gis 库代码中放置了一个调试器,发现就在抛出 ValueError 之前,它试图将数字 35.0 作为几何对象进行处理。

我想知道这个错误是否与需要在 Django 中设置默认值有关,或者我的数据库连接是否有问题?

最佳答案

事实证明,将默认值作为 lat + long 的数组传递(通常用于创建 Point)对于 gis 在解释模式时处理来说不是一个有效选项。如果任何人都需要,这里有一个很好的 gis 点字段默认值。

通读这个非常的旧对话找到了这个解决方案:http://south.aeracode.org/ticket/599

Location = models.PointField(default='POINT(0.0 0.0)')

关于python - 在模型中包含 GeoDjango Point,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30231104/

相关文章:

python - PyObjC 中的 Unicode 问题

string - 向现有字符串添加一个字符

python - psycopg2 选择 NULL 值

python - Heroku 拒绝连接到 postgres 数据库

android - MapBox queryRenderedFeatures 返回太多值

Python循环mysql语句

python - pandas - groupby 和重新缩放值

python - 使用 OpenCv 进行透视检测

javascript - 传单 geoJSON 无效,但它确实有效

python - ValueError : Unhandled object <_io. TextIOWrapper名称='world.json'模式='r'编码='utf-8-sig'>