我必须在我的Django项目中实现一个新功能:我必须检索距离最近的所有对象(纬度,经度),距离= 5km
所以,我使用Postgres + PostGIS并整合了GeoDjango。
在我的模特中,我有类似的东西:
class CarLocation(models.Model):
carInfo = models.OneToOneField(CarInfo, related_name="carLocation")
# Car location info
geom = models.PointField(srid=4326, spatial_index=True)
objects = models.GeoManager()
此时我可以进行如下查询:
pnt = fromstr('POINT(-96.876369 29.905320)', srid=4326)
qs = CarLocation.objects.filter(point__distance_lte=(pnt, D(km=5)))
我对此有一些疑问......
这是最好的方法吗?
将CarLocation
模型与CarInfo
表分开是一个很好的解决方案吗?在我的回复中,我还必须返回包含在CarInfo
。
在我的模型中使用spatial_index=True
是一个很好的解决方案吗?
如果我有很多积分(例如500-600k)这还不错吗?在这种情况下,可以对结果进行分页(通常在Django中)?