Postgres在Django注释中选择函数

时间:2017-01-05 13:10:11

标签: django annotations

我有旧数据库,需要自定义选择。

在sql中我可以使用:

SELECT x(geometry) FROM table

但我不知道如何在django select中强制使用x()函数。

2 个答案:

答案 0 :(得分:1)

您可以使用Expressions创建自定义功能。

class GeoX(Func):
    function = 'X'

MyModel.objects.annotate(x=GeoX('field'))

这将导致调用几何X函数,并将其结果注释到模型中标记为x的字段。然而,这是次要的解决方案。更好的解决方案是安装geodjango。这提供了对PostGIS中几乎所有单个功能的完全访问权限。也适用于spatialite和msyql空间扩展。

答案 1 :(得分:1)

我设法使用Func()

来解决问题
Func(F('geometry'), function='x')