gpt4 book ai didi

django - 外键关系的 GeoDjango 距离查询

转载 作者:行者123 更新时间:2023-12-03 18:28:16 25 4
gpt4 key购买 nike

我有以下模型(简化)

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()

我正在尝试查找所有 modelB 对象并按距给定位置的距离对它们进行排序(其中距离定义为给定位置与关联 modelA 的点对象之间的距离)。当我尝试运行查询时

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。

谢谢。

最佳答案

对于第一个,您需要将其更改为:

modelB.objects.all().distance(loc, field_name='modela__point')

如果您想查看所有 modelB 对象。

“.distance”用于计算距离字段并将其添加到 QuerySet(或 GeoQuerySet)的每个结果行。

关于django - 外键关系的 GeoDjango 距离查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5068457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com