我在ModelForm中有一个电话号码字段,用户可以在admin中搜索。问题是他们很懒,不想输入电话号码中的破折号。
如果我搜索'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上运行
答案 0 :(得分:1)
能够通过覆盖我的ModelAdmin中的get_changelist
来实现此目的。找到了一篇有用的博客文章,让我得到了答案: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