地理位置情報を含むオブジェクトを検索するために、Django (1.5.1) と Haystack (2.0.1) を使用しようとしています。
from django.contrib.gis.db import models as geomodels
class GeoModel(geomodels.Model):
geo_point = geomodels.PointField()
# Geographic Locator manager
objects = geomodels.GeoManager()
...
地理位置情報に基づいてフィルタリングする必要があります。次のクエリは、基本的にGeoModel
を使用しているため機能しgeomodels.GeoManager
ます。
from django.contrib.gis.measure import D
from django.contrib.gis.geos import Point
...
center = Point(lat, lng)
radius = D(km=100)
GeoModel.objects.all().filter(geo_point__distance_lte=(center, radius))
問題は、Haystack を使用して地理位置情報に基づいて結果をフィルタリングしようとしたときです。SearchView のサブクラスを作成しました。
from haystack.views import SearchView
...
class MySearchView(SearchView):
def get_results(self):
center = Point(lat, lng)
radius = D(km=100)
results = super(MySearchView, self).get_results() # << OK, get all results
return results.filter(geo_point__distance_lte=(center, radius)) # << WRONG, no results
では、Haystack のビュー/フォームをカスタマイズして、特定の場所に基づいて結果をフィルタリングするにはどうすればよいでしょうか? 前もって感謝します。