Django 模型管理员搜索-覆盖搜索字符串
我在ModelForm中有一个电话号码字段,用户可以在admin中搜索该字段。问题是他们很懒,不想在电话号码中输入破折号Django 模型管理员搜索-覆盖搜索字符串,django,django-admin,Django,Django Admin,我在ModelForm中有一个电话号码字段,用户可以在admin中搜索该字段。问题是他们很懒,不想在电话号码中输入破折号 def get_changelist(self, request, **kwargs): # Allow users to not have to enter in '-' when searching by phone # from django.contrib.admin.vie
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
如果我搜索“555-555-5555”,所有带有该电话号码的对象都将返回
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
如果我搜索“5555”,我得到的结果为零
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
是否要重写或只是更改提交的搜索字符串?如果是这样的话,我打算做类似的事情
if search_string.isdigit() and len(search_string) == 10:
search_string = '-'.join(
(search_string[:3],search_string[3:6],search_string[6:])
)
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
我在Django 1.6中看到了一个可能有用的方法,但我运行的是1.4能够通过在我的ModelAdmin中重写
get\u 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