(geo)django的dwithin-filter给出错误而来自postgres的ST_DWithin工作

时间:2014-04-25 00:39:17

标签: django postgresql postgis geodjango

我正在使用geodjango,我想根据距离过滤表中的行:

geom = models.MultiLineStringField()

当我像这样使用geodjango时:

geo_objects.objects.filter(geom__dwithin=(pnt, D(km=10)))

其中pnt为'POINT(-73.5666999999996136 45.5000000000000213)'

Geodjango给了我:

*** django.core.exceptions.FieldError: Join on field 'geom' not permitted. Did you misspell 'dwithin' for the lookup type?

另一方面,直接从postgres命令行做同样的事情(据我所知)会返回明智的结果:

select * from geo_objects
WHERE ST_DWithin(geo_objects.geom, 'POINT(-73.5665 45.5000)', 122222, false)

效果很好。

我做错了什么?

提前致谢。

1 个答案:

答案 0 :(得分:0)

这就是答案: 为了执行几何查询,您需要一个geomanager。 https://docs.djangoproject.com/en/dev/ref/contrib/gis/model-api/#geomanager