我是第一次使用 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/