Я изучаю, как использовать Geo Django. Когда пользователь регистрируется, я сохраняю информацию о широте и долготе, как показано ниже:
from django.contrib.gis.db import models
from django.contrib.gis.geos import Point
class GeoModel(models.Model):
"""
Abstract model to provide GEO fields.
"""
latitude = models.FloatField(blank=True, null=True, verbose_name='Latitude')
longitude = models.FloatField(blank=True, null=True, verbose_name='Longitude')
location = models.PointField(blank=True, null=True)
class Meta:
abstract = True
def save(self, *args, **kwargs):
if self.latitude and self.longitude:
self.location = Point(float(self.latitude), float(self.longitude))
super(GeoModel, self).save(*args, **kwargs)
Далее я хочу добавить новое поле под названием city
, где ** Я хочу сохранить название города, т.е. Лондон основывал длинные и детализированные детали.
Я просмотрел django-cities
, где хранится база данных городов из Geo Name, но это кажется излишним, а не совместимым с Python 3, поэтому я не пойду за мной. Я видел пакет под названием geopy, но это, похоже, полностью заменяет Geo Django и использует Google API, который поставляется с ограничениями.
Я хочу придерживаться Geo Django и как-нибудь сделать поиск, чтобы узнать название города на основе long и lat, и каковы мои варианты? т.е...
- Найдите способ установки http://www.geonames.org/ данных django-cities не работает для Python 3 и Django 1.8.x
- Как-то использовать Geo Django выполнить этот поиск, используя данные? (не знаю, что делать)
Является ли выше правильный подход к этому? Если да, то как мне получить данные в моей БД, а затем просмотрите его с помощью Geo Django, чтобы найти название города?