django admin search_fields with exclude

时间:2015-07-13 09:11:59

标签: django django-admin

在我们的django-admin网站上使用django search_fields,我们搜索数据库中的内容。 我希望在文本框(或任何其他方式)的search_fields中有一个排除选项

例如: 在我的管理文件中:

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

在网页上我正在寻找'John' - >得到一些结果,包括约翰列侬

我很乐意让'John {“排除”:“Lennon”}'

- >这将给出一些不包括约翰·列侬的结果

1 个答案:

答案 0 :(得分: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