我的模特:
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公里处的最近点,但它给出了“点初始化给出的参数无效
”答案 0 :(得分:1)
好的,现在很清楚,您的错误消息来自于使用Point
初始化None
课程。
这是您第一个严重问题。
根据错误消息判断,我的猜测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如何将该元组转换为数据库查找。