Python django点定义

Python django点定义,python,openlayers,geodjango,Python,Openlayers,Geodjango,我的模型: 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): l

我的模型:

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公里内最近的点,但它给出了“为点初始化提供的无效参数”

确定,因此现在可以清楚地看到,您的错误消息来自于使用
无初始化
点的

这是您的第一个关键问题

根据错误消息判断,
poi_s
初始化为
None,None
,因为
Mod()
是一个没有值的未保存实例,这些是无效参数

sk = Mod() # unsaved Mod instance with no defaults
poi_s = Point(sk.co_x, co_y, srid = 900913)
# sk.co_x is None
修复上述问题后,您将出现的第二个问题是查询具有无效查找类型(特定于接受元组的
点域
\uu距离
)的模型。我不知道如何解决该问题


你必须看看GeoJango是如何将元组转换成DB查找的。

为什么没有人回答任何问题呢?实际上,我的问题是我的模型中有DecimalField,因此我不向GeoManager提出任何问题……我不知道如何解决这个问题。你读了我的答案了吗?错误行在哪里?这个错误不是十进制错误或django错误,它听起来非常特定于这个点类和初始化点(X,Y,Z),您已经找到了正确的位置poi_s=Point(sk.co_X,co_Y,srid=900913),所以第一个问题是您将None,None传递给Point(),除非Point有一个基于此srid参数提取数据的特殊初始值设定项。错误消息听起来非常具体,这是一种方式,但实际上与您在这一行遇到的问题无关。根本问题是您正在初始化模型。…
sk=Mod()
,它没有默认值,因此
sk.co_x
None