Django
の管理サイトの検索条件のテキストボックスにオートコンプリート機能を追加する方法を説明します。
前提条件
- Python : 3.6.2
- Django : 3.0.5
こちらのソースをベースに実装していきたいと思います。
GitHub - koichi-ezato/sample
Contribute to koichi-ezato/sample development by creating an...
Django Admin Autocomplete Filter をインストール
GitHub - farhan0581/django-admin-autocomplete-filter: A simple Django app to render list filters in django admin using autocomplete widget.
A simple Django app to render list filters in django admin u...
下記コマンドを実行して「 Django Admin Autocomplete Filter
」をインストールします。
$ pip install django-admin-autocomplete-filter
settings.py の編集
settings.py
の INSTALLED_APPS
に django-admin-autocomplete-filter
を追加します。
INSTALLED_APPS = [
...
'admin_auto_filters'
...
]
使い方の注意点
オートコンプリートのフィルターがつけられるのは外部キーとして指定しているフィールドが対象になります。また、外部キーとして指定しているモデルの Admin
クラスが実装済みで search_fields
が設定されていないとオートコンプリートフィルターは動かないので注意が必要です。
UserAdmin の編集
accounts/admin.py
の UserAdmin
を下記のように編集します。
class BelongFilter(AutocompleteFilter):
title = '所属'
field_name = 'belong'
@admin.register(User)
class UserAdmin(ExportMixin, admin.ModelAdmin):
...
list_filter = [BelongFilter, IsActiveListFilter, NameFilter, EmailFilter,
['date_joined', DateRangeFilter]]
...
@admin.register(Belong)
class BelongAdmin(admin.ModelAdmin):
list_display = ['name', 'delete_flg']
search_fields = ['name']
動作確認
管理サイトのユーザ画面を開くと、
フィルターのところにオートコンプリートの検索条件が追加されました!!
最後に
オートコンプリート機能があるフィルターを追加する場合、外部キーの設定や外部キーのモデルの Admin
クラスの実装など前提条件が色々ありますので、パッケージの仕様や注意点をきちんと確認しながら実装していきたいですね。
コメント