Django按距离排序

我有以下模型:

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

以上是 Django按距离排序 的全部内容, 来源链接: utcz.com/qa/427034.html

回到顶部