Кто-нибудь успешно сделал это?
Попытка повторить функциональность, аналогичную той, что найдена в http://www.walmart.com/cservice/ca_storefinder.gsp
Где пользователь может ввести город, штат или почтовый индекс и иметь интеллектуальныйlookup
Я предпринял попытку с использованием небольшого количества регулярных выражений и разбиения полей, хотя я быстро понял, что это задача, которая потребует больше, чем немного мысли, чтобы заставить ее работать интеллектуально для конечного пользователя
*Рассмотрено 1009 * подходов
- live ajax автозавершение вызовов
- полнотекстовый поиск Sphinx
- поиск по регулярному выражению на стороне базы данных
- регулярное выражение для подтверждения ввода пользователя *Ниже приведен фрагмент кода 1019 *
ниже
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