在模型中包含一个GeoDjango点

7

我第一次使用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中创建一个crime对象并保存时,我遇到了错误:
“django.core.exceptions.ValidationError”
我已经进行了相当长时间的故障排除。我在实际gis库代码中放置了一个调试器,并发现在抛出ValueError之前,它正在尝试将数字35.0处理为几何对象。
我想知道这个错误是否与需要在Django中设置默认值有关,或者我的数据库连接可能有问题?
1个回答

11

原来将默认值作为包含纬度和经度的数组进行传递,通常可用于创建Point,但对于gis解释模式时处理这种情况无效。以下是一个对于gis点字段有用的良好默认值,如果有需要可以使用。

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

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

你的解决方案对我来说不起作用,也许你有什么建议。 - JJD
1
@JJD 这是 settings.py 文件中的一个错误。这个答案似乎仍然非常有效! - raratiru

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接