Untitled
unknown
python
a year ago
1.0 kB
6
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