【问题标题】:Including a GeoDjango Point in a model在模型中包含 GeoDjango 点
【发布时间】:2015-05-14 06:50:37
【问题描述】:

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

【问题讨论】:

    标签: python postgresql geojson geodjango


    【解决方案1】:

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

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

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

    【讨论】:

    • 你的解决方案does not work for me - 也许你有一个建议。
    • @JJD 这是 settings.py 文件中的错误。这个答案似乎仍然很好用!
    猜你喜欢
    • 1970-01-01
    • 2015-03-07
    • 2016-09-07
    • 2015-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-14
    • 1970-01-01
    相关资源
    最近更新 更多