次のモデルがあります(簡略化)
from django.contrib.gis.db import models as geomodels
modelB (geomodels.Model):
objects = geomodels.GeoManager()
modelA (geomodels.Model):
point = geomodels.PointField(unique=True)
mb = models.ForeignKey(modelB,related_name='modela')
objects = geomodels.GeoManager()
すべてのモデル B オブジェクトを見つけて、特定の場所からの距離で並べ替えようとしています (距離は、特定の場所と関連するモデル A のポイント オブジェクトの間の距離として定義されます)。クエリを実行しようとすると
modelB.objects.distance((loc, field_name='modela__point')
というエラーが表示されます
TypeError: ST_Distance output only available on GeometryFields.
loc は Point オブジェクトであることに注意してください。ただし、クエリを実行すると
modelB.objects.filter(modela__point__distance_lte = (loc, 1000))
このクエリはエラーなく期待どおりに機能します。
間違いの可能性はありますか?私はdjango 1.2.4、PostGis 1.5.2、PostGres 8.4を使用しています。
ありがとう。