我想根据输入的美国邮政编码的距离进行搜索。
首先,我知道我需要一个搜索表单:
class SearchForm(forms.Form):
zipcode = forms.CharField(max_length=5)
然后我将这些选项传递给下一个视图,在该视图中我根据输入的参数进行过滤。这对我来说很棘手。我搜索了很多,似乎有很多解决方案。我用这篇文章作为参考会给我这样的东西:
def display_map(request, zipcode):
objects_near_zip = Thing.objects.filter(location__distance_lte=(Point([zipcode]), D(mi=5)))
但我需要把邮政编码变成一个点。我该怎么做?您是否使用过更好的解决方案?谢谢你的想法!
编辑:
我找到了这个讨论,但实现对我来说有点难以理解。我创建了一个Zipcode
模型,这是有道理的。
但我不确定如何或在哪里加载邮政编码,就像他在帖子中所说的那样:
lm = LayerMapping(Zipcode, 'tl_2008_us_zcta5.shp',
{ 'code' : 'ZCTA5CE',
'mpoly' : 'MULTIPOLYGON',
})
lm.save()
我在哪里放置此代码?shp 文件很大,即使在我的桌面上也需要很长时间,所以我不确定这是最好的解决方案。