django - 为特定距离范围内的项目过滤 PointField 的查询集字段不正确
问题描述
我想为特定范围内的项目过滤查询集。这就是我的模型的样子
class modelEmployee(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True)
location = models.PointField(srid=4326,max_length=40, blank=True,null=True)
objects = GeoManager()
现在这就是我运行过滤器命令的方式。退回 90 英里特定范围内的物品。
qset = modelEmployee.objects.filter(location__distance_lte=(someLocation, D(mi=90)))
结果返回一个项目,其距离实际上是 223.732 英里,它不应该返回。
这些是这两个项目的位置
location A - lat: 47.628641 and long: -117.402997
location B - lat: 47.618337 and long: -122.205341
两者的黑白距离实际上是 223.732 英里。我一定是过滤错了。关于我可能出错的地方有什么建议吗?
解决方案
从文档地理空间查询中,您应该使用dwithin
您的示例应该像这样使用它:
qset = modelEmployee.objects.filter(location__dwithin=(someLocation, D(mi=90)))
推荐阅读
- json - ASP.NET Core 3 - Serilog 如何在 appsettings.json 文件中配置 Serilog.Sinks.Map?
- reactjs - 将数据传递给 react-vega
- android - 评级栏在回收站视图中为 0
- swift - Firebase 和 Google 身份验证构建失败 => API_UNAVAILABLE(macCatalyst) ==> “预期 ','”
- localhost - 将 Instagram 基本显示 API 与 Hugo 和 localhost 等静态站点结合使用?
- diagrammer - 使用 DiagrammeR 节点和边而不是 graphviz 创建流程图
- java - android studio Arraylist 按降序排序
- ecmascript-6 - 从对象数组中删除重复的对象副本
- powershell - Powershell在启动时不运行颜色更改
- django - Django 使用父对象获取相关子对象