2013-07-09 2 views
2

У меня есть поле номера телефона в ModelForm, который пользователи могут искать в admin. Проблема в том, что они ленивы и не хотят вводить тире в телефонных номерах.Model Admin Search - переопределить строку поиска

Если я ищу «555-555-5555» все объекты с, что номер телефона будет возвращать

Если я ищу «5555555555», я получаю нулевой результат.

Есть ли способ переопределить или просто изменить строку поиска, которая будет отправлена? Если это так я планировал делать что-то вроде

if search_string.isdigit() and len(search_string) == 10: 
    search_string = '-'.join(
     (search_string[:3],search_string[3:6],search_string[6:]) 
    ) 

Я вижу в Django 1.6 есть get_search_results method, что может быть полезным, но я бегу на 1,4

ответ

1

Смог добиться этого, перекрывая get_changelist в моей ModelAdmin , Нашел полезное сообщение в блоге, которое привело меня к ответу: Override ModelAdmin ChangeList

def get_changelist(self, request, **kwargs):         
    # Allow users to not have to enter in '-' when searching by phone #  
    from django.contrib.admin.views.main import ChangeList     

    class NewChangeList(ChangeList):           
     def get_query_set(self, *args, **kwargs):        
      query = self.query            
      if query.isdigit() and len(query) == 10:       
       self.query = '-'.join((query[:3], query[3:6], query[6:]))  

      return super(NewChangeList, self).get_query_set(*args, **kwargs) 

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