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公里内最近的点,但它给了我一个错误提示:“点初始化时给定的参数无效”。
1 个回答
1
好的,现在很明显,你的错误信息是因为用 None
初始化了一个 Point
类。
这就是你第一个关键问题。
根据错误信息,我猜 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
你在解决了上面的问题后,会遇到第二个问题,那就是用无效的查找类型查询模型(这和 PointField
相关,具体是 __distance
),它需要一个元组。至于怎么解决这个问题,我就不知道了。
你需要看看 GeoDjango 是怎么把这个元组转换成数据库查询的。