Как бы я написал этот запрос в GeoDjango?(Это библиотека для географических расчетов в Джанго) - PullRequest
1 голос
/ 15 марта 2010

Сейчас я использую сырой SQL для поиска людей в пределах 500 метров от текущего пользователя .

cursor.execute("SELECT user_id FROM myapp_location WHERE\
       GLength(LineStringFromWKB(LineString(asbinary(utm), asbinary(PointFromWKB(point(%s, %s)))))) < %s"\
       ,(user_utm_easting, user_utm_northing, 500));

Как бы я сделал это в GeoDjango ? Писать пользовательский SQL везде немного утомительно.

1 Ответ

1 голос
/ 15 марта 2010

Хорошо, если у вас есть подходящая модель,

from django.contrib.gis.db import models

class User(models.Model):
    location = models.PointField()
    objects = models.GeoManager()

это будет выглядеть так:

User.objects.filter(location__dwithin=(current_user.location, D(m=500)))

Но учтите, что такие поиски расстояния не поддерживаются MySQL.

...