私は古いデータベースを持っており、カスタム選択が必要です。私が使用することができ、SQLでDjangoアノテーションのPostgres select関数
:
SELECT x(geometry) FROM table
が、私は選択のDjangoでのx()関数を強制する方法を知りません。
私は古いデータベースを持っており、カスタム選択が必要です。私が使用することができ、SQLでDjangoアノテーションのPostgres select関数
:
SELECT x(geometry) FROM table
が、私は選択のDjangoでのx()関数を強制する方法を知りません。
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