在模型中包含GeoDjango Point

时间:2015-05-14 06:50:38

标签: 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:不能将类型为float的对象用于几何查找参数。

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

  

django.core.exceptions.ValidationError

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

我想知道这个错误是否与需要在Django中设置默认值或者我的数据库连接可能出错有什么关系?

1 个答案:

答案 0 :(得分:10)

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

通过阅读非常旧对话来了解此解决方案:http://south.aeracode.org/ticket/599

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