當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。