Untitled
unknown
python
a year ago
1.0 kB
10
Indexable
doctors.exclude(
Q(address__latitude__isnull=True) & Q(
address__longitude__isnull=True)
).annotate(
distance=ExpressionWrapper(
6371 * 2 * ATan2(
Sqrt(
Sin(Radians(F('address__latitude') - cur_lat) / 2) ** 2 +
Cos(Radians(cur_lat)) * Cos(Radians(F('address__latitude'))) *
Sin(Radians(F('address__longitude') - cur_long) / 2) ** 2
),
Sqrt(1 - (
Sin(Radians(F('address__latitude') - cur_lat) / 2) ** 2 +
Cos(Radians(cur_lat)) * Cos(Radians(F('address__latitude'))) *
Sin(Radians(F('address__longitude') - cur_long) / 2) ** 2
))
),
output_field=FloatField()
)
).filter(distance__lte=float(near)).order_by("distance")Editor is loading...
Leave a Comment