我有一个Alert
模型,其中coordinates
和distance
为字段。我想提出一个查询,从给定的坐标中提取距离小于警报distance
字段值的所有警报。
如果这不使用GIS功能,我可以在Django中使用F对象,但地理空间查询显然不支持F对象。
如何实现这样的查询? 以下是我理想的查询:
Alert.objects.filter(coordinates__distance_lte=(coordinates, F("distance")))
我在Postgis上运行GeoDjango。
以下是警报模型的相关部分:
class Alert(models.Model):
coordinates = models.PointField()
distance = models.IntegerField()
以下是我希望生成的SQL:
select * from alert where ST_Distance_Sphere(coordinates, 'POINT(3 50)') < distance;
显然,我有一个原始查询的解决方案,但我很想知道这是否可以直接通过ORM。