在国防部包括一个GeoDjango点

2024-04-19 15:56:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我是第一次使用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中设置默认值有关,或者我的数据库连接是否有问题?在


Tags: django代码fromimportdefaultdbmodels错误
1条回答
网友
1楼 · 发布于 2024-04-19 15:56:26

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

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

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

相关问题 更多 >