当前位置: 首页 > 面试题库 >

Django按距离排序

邹宏峻
2023-03-14
问题内容

我有以下模型:

class Vacancy(models.Model):
    lat = models.FloatField('Latitude', blank=True)
    lng = models.FloatField('Longitude', blank=True)

我应如何查询以距离排序(距离为无穷大)?

如果需要,可以在PosgreSQL,GeoDjango上工作。


问题答案:

首先,最好使一个点字段而不是使lat和lnt分开:

from django.contrib.gis.db import models

location = models.PointField(null=False, blank=False, srid=4326, verbose_name="Location")

然后,你可以像这样过滤它:

from django.contrib.gis.geos import *
from django.contrib.gis.measure import D

distance = 2000 
ref_location = Point(1.232433, 1.2323232)

res = yourmodel.objects.filter(location__distance_lte=(ref_location, D(m=distance))).distance(ref_location).order_by('distance')


 类似资料:
  • 我正在尝试按地理距离对具有嵌套地理点映射的索引进行排序。 这是我的简化映射: 这里,每个组织可以有几个地点点。 文档: 这是我的查询(PHP数组): 预期结果 : 我希望按geo_point排序资源(检查每个位置,然后检查某个位置是否靠近给定的纬度/经度)

  • 问题内容: 无法弄清楚如何对用户附近的 地址 进行自动 排序 。我不明白从哪里开始以及如何编写代码。 我的 firebase中 有地址。地址的类型为字符串(不是纬度/经度)。例: 我知道需要从firebase 使用 查询 ,但是如何使用 query ,我现在不明白。 这是我的代码: 如何使用 Firebase中的* 数据在用户附近自动 排序 地址? * 问题答案: 这是一个复杂的过程,需要多个步骤

  • 问题内容: 我有一个字段,显示为从今天起的天数。因此和将分别显示为正数和负数。现在,我希望对它们进行排序,以便非负数首先以升序排列,然后负数以降序排列。例如: 问题答案: 以下内容也可以工作: 但是,此表单不会使用索引来按所需顺序生成行。如果您的查询将从中受益(从表中选择大多数行或使用限制),则需要使用并集:

  • 我正在尝试一个mysql查询来根据距离排序帖子,比如说在半径250英里内,所有的工作都很好,除了我需要以一种方式排序帖子,特色帖子总是在顶部。这是我的mysql查询(我正在wordpress上做)。 问题是ORDER BY,它给我的错误是“Subquery returns多于1行” 如果删除ORDER BY(从wp_postmeta中选择wp_postmeta.meta_value,wp_post

  • 问题内容: 我正在使用django 1.4,django-haystack 2.0和Elasticsearch 0.19.1,我有一个像这样的SearchIndex: 和这样的项目模型: 因此,我想通过从近到远的距离特定坐标来查询Project对象: 但我收到此错误: 无法使用’来查询Elasticsearch : ‘:返回的非OK状态代码(500),包含u’SearchPhaseExecutio

  • 所以我有jQuery数据表设置和运行良好。我的最终目标是允许用户使用谷歌位置自动完成,更新他们的位置,然后在刷新时将一个“可排序”的距离列添加到我的数据表表中。 计划是在google autocomplete的文本输入旁边有一个按钮,上面写着使用这个地址,一旦用户使用autocomplete搜索并找到一个地址,然后按下按钮,我想(可能)将它们发送到加载页面几秒钟,同时 1) 阅读文本字符串,将其格