【发布时间】:2013-10-10 14:48:15
【问题描述】:
我的模型有两个字段(纬度和经度),我想将它们组合成一个点对象。但是,我无法弄清楚如何根据这些值的组合进行过滤:
例如:
>>> from django.contrib.gis.geos import Point
>>> lat = 5
>>> lon = 1
>>> pnt = Point(lat, lon)
>>> buf = pnt.buffer(0.0001)
>>> z = Thing.objects.filter(pnt__intersects=buf)
FieldError: Cannot resolve keyword 'pnt' into field. ## I dont have a model field named pnt
我意识到这不是正确的方法,但我认为它说明了我遇到的问题。如何将两个模型字段(lat + lon)组合成一个Point 对象,然后根据该点进行过滤?
编辑:添加事物模型
class Thing(models.Model):
lat = models.FloatField()
lon = models.FloatField()
【问题讨论】:
-
Thing模型是如何定义的? -
在@karthikr 上方添加了相关模型字段。如果我忽略了任何重要信息,请告诉我,我会添加它。感谢您提供任何可能有帮助的想法!
-
Thing.objects.filter(pnt期望pnt成为模型属性。 -
谢谢!是的,我明白这一点,但我正试图弄清楚如何做类似的事情。你有什么想法?通常如何做这样的事情?我希望保留
lat和lon作为模型字段,以便以后更容易插入谷歌地图.. -
z = Thing.objects.filter(lat=pnt.get_x(), lng = pnt.get_y())
标签: django filter point geodjango django-queryset