2015-07-13 57 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函数 –