我有旧的数据库,需要自定义选择。Postgres在Django注释中选择函数
在SQL中,我可以使用:
SELECT x(geometry) FROM table
但我不知道如何强制X()在Django选择功能。
我有旧的数据库,需要自定义选择。Postgres在Django注释中选择函数
在SQL中,我可以使用:
SELECT x(geometry) FROM table
但我不知道如何强制X()在Django选择功能。
您可以使用Expressions创建自定义功能。
class GeoX(Func):
function = 'X'
MyModel.objects.annotate(x=GeoX('field'))
这将导致几何X函数被调用,它的结果被注释到模型中标记为x的字段。然而,这是劣质的解决方案。更好的解决方案是安装geodjango。这提供了对PostGIS中几乎所有单一功能的完全访问。也适用于spatialite和msyql空间扩展。
我设法解决使用Func键()的问题
Func(F('geometry'), function='x')
谢谢你,我的不幸的Postgres版本是旧的GeoDjango内置。 – Crystal
这是不幸的。为什么不升级你可能也使用旧版本的postgis,而且它没有现代版本的丰富功能。 – e4c5
庞大的公司,很多数据和大家都害怕升级xD – Crystal