0

我的模型:

class Mod(models.model)
    name = models.CharField(max_length = 255)
    co_x = models.DecimalField(max_digits = 11, decimal_places = 8)
    co_y = models.DecimalField(max_digits = 11, decimal_places = 8)

我的看法:

def closedPoint(request):
    location_name = str(request.POST.get("lo", default=""))
    nokta_x = int(float(request.POST.get("x"))
    nokta_y = int(float(request.POST.get("y"))
    poi = Point(nokta_x, nokta_y, srid = 900913)

    sk = Mod()
    poi_s = Point(sk.co_x, co_y, srid = 900913)

    resut_poi = Mod.objects.filter(poi_s__distance_lte = (poi, D(km = 7))).filter(name__in = location_name)

在这里我想扣除 7 公里内的最近点,但它给出“为点初始化提供的参数无效

4

1 回答 1

1

好的,现在很清楚您的错误消息来自Point使用None.

这是你的第一个关键问题。

从错误消息来看,我的猜测是poi_s初始化None, NoneMod()一个没有值的未保存实例,并且这些是无效参数。

sk = Mod() # unsaved Mod instance with no defaults
poi_s = Point(sk.co_x, co_y, srid = 900913)
# sk.co_x is None

修复上述问题后将出现的第二个问题是查询接受元组的无效查找类型(特定于PointField, )的模型。__distance怎么解决,不知道。

您将不得不查看 GeoDjango 如何将该元组转换为数据库查找。

于 2011-03-17T13:37:35.173 回答