无法将POSTGIS查询转换为GeoDjango查询

时间:2013-06-26 23:44:05

标签: sql django postgis postgresql-9.1 geodjango

我是POSTGIS和GeoDjango的新手。我有一个在POSTGIS中工作的查询,但是,我很难将其转换为GeoDjango查询。

我的表world_node包含两列:node - 整数和mpoint - 几何点

POSTGIS SQL查询(工作):

SELECT * FROM world_node 
WHERE ST_CONTAINS(ST_GeomFromText('POLYGON((-100 0, 0 150, 150 0, 0 -100, -100 0))', 4326), mpoint);

我正在尝试获取指定多边形中包含的所有点,并且它可以正常工作。

请帮助我使用GeoDjango语法。到目前为止,这是我的代码:

poly = GEOSGeometry('Polygon((-100 0, 0 150, 150 0, 0 -100, -100 0))', 4326)
nodes = Nodes.objects.filter(poly__contains=mpoint)

我收到以下错误:

NameError: name 'mpoint' is not defined

注意:mpoint是我表中的一列,也是models.py

中我的Node类中的一个字段

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

你的语法不正确,你应该像这样切换'poly'和'mpoint':

nodes = Nodes.objects.filter(mpoint__contains = poly)