Postgres select function in Django annotation



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

在SQL中,我可以使用:

SELECT x(geometry) FROM table

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

您可以使用表达式创建自定义函数。

class GeoX(Func):
    function = 'X'
MyModel.objects.annotate(x=GeoX('field'))

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

我设法使用 Func() 解决问题

Func(F('geometry'), function='x')

最新更新