首先,最好使一个点字段而不是使lat和lnt分开:
from django.contrib.gis.db import modelslocation = models.PointField(null=False, blank=False, srid=4326, verbose_name="Location")
然后,你可以像这样过滤它:
from django.contrib.gis.geos import *from django.contrib.gis.measure import Ddistance = 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')


