Django в настоящее время не поддерживает тип данных "Point" в MySQL. Вот почему я создал свой собственный.
class PointField(models.Field):
def db_type(self):
return 'Point'
class Tag(models.Model):
user = models.ForeignKey(User)
utm = PointField()
Как видите, это работает, и syncdb
прекрасно создает модель.
Однако мой текущий код вычисляет длину между двумя точками с использованием необработанного SQL.
cursor.execute("SELECT user_id FROM life_tag WHERE\
(GLength(LineStringFromWKB(LineString(asbinary(utm), asbinary(PointFromWKB(point(%s, %s)))))) < 55)...
Это говорит: выберите, где длина между данной точкой и точкой таблицы меньше 55.
Как я могу сделать это с Django вместо RAW SQL? Я больше не хочу делать курсоры и операторы SELECT. Как я могу изменить файл models.py для этого?