Кто-нибудь успешно это сделал?Django - Объединение города, штата и почтового индекса в одно поле
Попытка повторить функциональность, аналогичную той, что содержится в http://www.walmart.com/cservice/ca_storefinder.gsp
Где пользователь может ввести либо город, штат или почтовый индекс и есть интеллектуальный поиск
Я начал попытку, используя немного регулярных выражений и разделение полей, хотя я быстро понял, что это была задача, которая потребует больше, чем немного подумать, чтобы заставить ее работать разумно для конечного пользователя.
подходы к рассмотрению
- живые Аякса автозаполнения звонки
- сфинкс полнотекстовый поиск
- регулярное выражение сторона поиск дб
- регулярное выражение пользовательского ввода Validate
фрагмент кода, таким образом, значительно ниже
import re
from general.models import ZipCode
def findLocation(value):
match = re.search(r"\d{5}", value)
if match:
try:
return Zipcode.objects.get(zip=value)
except ZipCode.DoesNotExist:
return False
else:
kwargs = {}
vals = value.split(',')
if len(vals) > 1:
kwargs['city'] = value[:len(value)-len(vals[-1])-1]
state = vals[-1].strip()
if len(state) == 2:
kwargs['state'] = state
else:
kwargs['state_name'] = state
else:
kwargs['city'] = value
return ZipCode.objects.filter(**kwargs)
ZipCode в этот пример представляет собой модель базы данных, которая содержит все американские почтовые индексы/состояния/государственные сокращения/города есть копия доступна на GitHub на
https://github.com/amites/django-general
Благодарим вас за предложение - я встретил Solr до этого, хотя ничего не строил с ним - это звучит как отличный прецедент для тех, кому нужно держать вещи в доме – Alvin
Google Geocoding казался до тех пор, пока я не пересмотрю цены - 2500 максимальных запросов в день без бизнес-лицензии, которая становится дорогой быстро для некоммерческой - предположите, что это будет несколько полей на данный момент и SOLR позже – Alvin