我正在Django建立一个房地产网站,并有一个Home模型,存储各种信息,包括地址。数据库后端正在使用MySQL。
想要像搜索一样创建 Yelp 。
用户可以输入邮政编码或城市名称的搜索,然后在该区域中获取主页结果。
用户还可以从该点选择半径(5英里,10英里......)并获得更多/更少的结果。
搜索结果将在谷歌地图上,用户可以放大/缩小以在地图中获取新的搜索结果。
Geo Django 是否适合这里?猜测没有太多人使用GeoDjango,因为我找不到很多文档来解决上面提到的问题。
在查看official doc大约几个小时后,我无法找到问题的相关示例,也不确定它与使用MySQL的现有网站的集成程度。对我的简单位置使用来说可能太复杂了?
我真的好奇Geo Django是否合适,如果是这样的话......那么我会更积极深入地研究它。如果没有,我会尝试自己构建它。
有关GeoDjango或如何构建系统的任何指导或提示都会非常有用,我们将非常感激。
答案 0 :(得分:3)
GeoDjango可以处理类似的事情。假设您的Home
模型如下所示:
from django.contrib.gis.db.models import PointField
class Home(Model):
location = PointField()
.. etc
您可以在x英里范围内获取所有Home
个模型:
from django.contrib.gis.measure import D
from django.contrib.gis.geos import Point
Home.objects.filter(location__distance_lte=(Point([...]), D(mi=x)))
基本上,你需要给过滤器的是一个包含Geometry(在你的情况下是Point
)和距离(用D
对象)的元组。你有很多单位代表距离,在您的情况下mi
)。
此外,这在MySQL中不起作用,因为没有后端函数来处理它。你最好的选择是PostgreSQL。
答案 1 :(得分:1)
我在Django上构建了一个具有类似功能的站点(MySQL数据库中包含地址和纬度/经度坐标)。我和那些更熟悉Django和GeoDjango的队友交谈,他们建议我的项目可能有点过分。
因此,如果迁移数据库是一个巨大的痛苦而且没有必要,那么您可能只需坚持使用当前数据库并使用Haversine公式查询来查找到某个位置的最近点。
答案 2 :(得分:0)
答案 3 :(得分:-1)
GeoDjango可以工作,但是对于新手用户来说很难安装。 GeoDjango对MySQL也有一些限制。据我所知,它在postgresql上表现得最好。
您在geodjango安装中遇到了什么问题?
在我开始了解geodjango安装过程之前大约10-20小时我已经浪费了:)