Django 点定义 [英] django point definition

查看:73
本文介绍了Django 点定义的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的模型:

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

here i want to deduct closest point in 7 km but it gives "Invalid parameters given for Point initialization

推荐答案

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

Ok, so it's now clear your error message comes from initializing a Point class with None.

这是您的第一关键问题.

从错误信息来看,我的猜测是 poi_s 是用 None, None 初始化的,因为 Mod() 是一个未保存的实例没有值,这些是无效参数.

Judging by the error message, my guess is that poi_s is initialized with None, None as Mod() is an unsaved instance with no values and those are the invalid parameters.

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)的模型,该模型接受元组.怎么解决,不知道.

Your second problem that will appear after fixing the above is querying a model with an invalid lookup type (specific to PointField, __distance) which accepts a tuple. How to solve that, I don't know.

您必须查看 GeoDjango 如何将该元组转换为数据库查找.

You would have to look at how GeoDjango translates that tuple into a DB lookup.

这篇关于Django 点定义的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆