У меня есть модель Person, которая теперь может иметь несколько офисных «местоположений», каждое со своей широтой / долготой.
Прежде чем можно было добавить только 1 офис, я использовал вилку, которую я сделал для django-haystack, которая использует плагин JTeam для определения радиуса. Смотри https://github.com/sidmitra/django-haystack
class PersonIndex(indexes.SearchIndex):
lat = indexes.FloatField()
lng = indexes.FloatField()
sqs.spatial(lat=lat, long=lng, radius=radius, unit=kwargs.get('unit'))
Поскольку число офисов не ограничено, я не могу использовать отдельные поля lat / lng в индексе.
Один из способов, которым я мог придумать, - это индексировать модель «Местоположение». Каждое местоположение будет отдельной записью в индексе. Таким образом, решение этой проблемы, но будет означать репликацию всех полей из индекса Person в этот индекс местоположения. Хотя это может быть хорошим решением в краткосрочной перспективе, но, вероятно, будет неопрятным в долгосрочной перспективе?
Хотите знать, если есть способ индексировать местоположения по отдельности, а затем фильтровать связанных лиц по адресам, которые находятся в пределах указанного радиуса?