2010-04-13 3 views
0

Я придумал простой поиск для поиска записей в моем приложении. Пользователь просто вводит все параметры в поле поиска, затем все это сопоставляется с базой данных, после чего результаты возвращаются. Одним из этих полей является номер телефона ... теперь в базе данных он хранится в формате XXX-XXX-XXX. Поиск, например, для «765-4321» тянет только «416-765-4321 ... но я хочу, чтобы он возвращал оба« 416-765-4321 »и« 4167654321 »Поиск записей

Мой взгляд такой же, как ниже:

def search(request, page_by=None):  
    query = request.GET.get('q', '') 
    if query: 
     term_list = query.split(' ') 
     q = Q(first_name__icontains=term_list[0]) | 
      Q(last_name__icontains=term_list[0]) | 
      Q(email_address__icontains=term_list[0]) | 
      Q(phone_number__icontains=term_list[0]) 
     for term in term_list[1:]: 
      q.add((Q(first_name__icontains=term) | 
       Q(last_name__icontains=term) | 
       Q(email_address__icontains=term) | 
       Q(phone_number__icontains=term)), q.connector) 
     results = Customer.objects.filter(q).distinct() 
     all = results.count() 
    else: 
    results = [] 

    if 'page_by' in request.GET: 
    page_by = int(request.REQUEST['page_by']) 
    else: 
    page_by = 50 

    return render_to_response('customers/customers-all.html', 
          locals(), context_instance=RequestContext(request)) 
+0

Как телефонные номера хранятся ли они всегда ххх-ххх-хххх Или некоторые xxx-? xxx-xxxx и другие - xxxxxxxxxx? nevermind: не хорошо читал ваш вопрос. –

ответ

2

Одним из вариантов является сохранить урезанную номер в отдельном поле и поиск по ней

+0

Думаю, я сейчас поеду с этим. Thnx Dmitry .... должен был подождать некоторое время и посмотреть, могу ли я придумать что-то лучше. – Stephen

Смежные вопросы