当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python Django ModelAdmin.search_fields用法及代码示例


本文介绍 django.contrib.admin.ModelAdmin.search_fields 的用法。

声明

ModelAdmin.search_fields

设置search_fields 以启用管理员更改列表页面上的搜索框。这应该设置为每当有人在该文本框中提交搜索查询时将搜索的字段名称列表。

这些字段应该是某种文本字段,例如 CharFieldTextField 。您还可以使用查找 API “follow” 表示法对 ForeignKeyManyToManyField 执行相关查找:

search_fields = ['foreign_key__related_fieldname']

例如,如果您有一个作者的博客条目,则以下定义将允许通过作者的电子邮件地址搜索博客条目:

search_fields = ['user__email']

当有人在管理员搜索框中进行搜索时,Django 将搜索查询拆分为单词并返回包含每个单词的所有对象,不区分大小写(使用 icontains 查找),其中每个单词必须至少在一个search_fields 的。例如,如果 search_fields 设置为 ['first_name', 'last_name'] 并且用户搜索 john lennon ,Django 将执行此 SQL WHERE 子句的等效操作:

WHERE (first_name ILIKE '%john%' OR last_name ILIKE '%john%')
AND (first_name ILIKE '%lennon%' OR last_name ILIKE '%lennon%')

搜索查询可以包含带空格的引用短语。例如,如果用户搜索 "john winston"'john winston' ,Django 将执行此 SQL WHERE 子句的等效操作:

WHERE (first_name ILIKE '%john winston%' OR last_name ILIKE '%john winston%')

如果您不想使用 icontains 作为查找,您可以通过将其附加到字段来使用任何查找。例如,您可以通过将 search_fields 设置为 ['first_name__exact'] 来使用 exact

一些(较旧的)用于指定字段查找的快捷方式也可用。您可以在search_fields 中为字段添加以下字符前缀,相当于在字段中添加__<lookup>

字首 抬头
^ startswith
= iexact
@ search
None icontains

如果您需要自定义搜索,您可以使用 ModelAdmin.get_search_results() 来提供额外的或替代的搜索行为。

在 Django 3.2 中更改:

添加了对搜索带空格的引用短语的支持。

相关用法


注:本文由纯净天空筛选整理自djangoproject.com大神的英文原创作品 django.contrib.admin.ModelAdmin.search_fields。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。