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