【问题标题】:Model Admin Search - Override the search string模型管理员搜索 - 覆盖搜索字符串
【发布时间】:2013-07-06 12:41:57
【问题描述】:

我在 ModelForm 中有一个电话号码字段,用户可以在管理员中搜索。问题是他们很懒,不想在电话号码中输入破折号。

如果我搜索“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 上运行

【问题讨论】:

    标签: django django-admin


    【解决方案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                                                     
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-30
      • 2013-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多