Django 管理中的精确字段搜索

Posted

技术标签:

【中文标题】Django 管理中的精确字段搜索【英文标题】:Exact field search in the Django admin 【发布时间】:2017-12-30 04:08:53 【问题描述】:

我正在尝试为特定模型配置 Django 管理绑定,以便我可以通过特定字段的确切值快速过滤。我知道我可以手动篡改 GET 参数来执行此操作:

?fieldname__exact=foobar

我似乎不能做的是让侧边栏显示一个小表单,我可以在其中输入此值。我知道我可以将fieldname 添加到list_filter,但这并不能很好地扩展到数十个唯一值之外。我研究了一下 django-advanced-filters,但它似乎与 Django 1.11 不兼容。

如何在 Django 管理中实现对特定字段的精确搜索?

【问题讨论】:

【参考方案1】:

有点晚了,但我希望它仍然可以帮助某人

http://www.django-rest-framework.org/api-guide/filtering/#searchfilter 列出了搜索字段的可能配置。

'^' Starts-with search.
'=' Exact matches. (case-insensitive)
'@' Full-text search. (Currently only supported Django's mysql backend.)
'$' Regex search. (Only with Django Rest Framework)

在你的情况下,只需添加

search_fields = ['=fieldname', 'otherfieldname']

给您的管理员。

更新: 从 Django 2.1 开始,还可以向搜索字段添加查找(例如“fieldname__exact”)。您可以在Django Docs 以及可能的Lookups 中找到信息

【讨论】:

有趣的功能,但不幸的是,它不允许专门为一个字段提供单独的搜索框,是吗? 不,每个字段都是相同的搜索字段。恐怕只有 html/javascript 才能使用单独的字段。 也记录在Django docs 正则表达式搜索在 django admin 中不可用,仅在 DRF 中可用。此外,完全匹配不区分大小写。 @Pieter 你有没有找到专门针对一个字段的单独搜索框的解决方案?

以上是关于Django 管理中的精确字段搜索的主要内容,如果未能解决你的问题,请参考以下文章

Django过滤器精确匹配多字段:ManyToManyField using ModelMultipleChoiceFilter

尝试使用 django 过滤器为给定模型中的所有字段创建一般搜索

Solr 精确词搜索

Django查询集获得精确的多对多查询[重复]

django怎么模糊匹配json中的数据?

初识ElasticSearch -文档查询之term精确查询