2015-07-13 59 views
3

隨着Django的search_fields在我們的Django的管理網站,我們搜索數據庫負載的東西。 我想在文本框中search_fields的排除選項(或任何其他方式)django管理search_fields與排除

例如: 在我的管理文件:

search_fields = ('name', 'os', 'owner__first_name', 'owner__last_name',) 

,並在網頁中我在找'約翰 - >得到了一些成果,包括約翰·列儂

我很想有‘約翰{‘排除’:‘儂’}’

- >這會給一些成果不包括約翰·列儂

回答

1

您可以通過在ModelAdmin子類中定義get_search_results方法來自定義搜索。 雖然沒有測試過..

class YourModelAdmin(admin.ModelAdmin): 
    list_display = ('name', 'os') 
    search_fields = ('name', 'os', 'owner__first_name', 'owner__last_name',) 

    def get_search_results(self, request, queryset, search_term): 
     queryset = super(YourModelAdmin, self).get_search_results(request, queryset, search_term) 
     try: 
      queryset |= self.model.objects.exclude(owner__last_name__iexact='lennon') 
     except: 
      pass 
     return queryset 
+1

嗯,謝謝,我會重寫set_search_results函數 –