Как изменить фильтр администратора Django для использования выпадающего списка вместо списка, по которому также можно осуществлять поиск?
Прежде чем вы пометите это как дубликат, я прочитал решения этого вопроса.
В Django Admin у меня много значений. Команда, которая работает над этими данными, в настоящее время может использовать CTRL+F, чтобы хотя бы найти нужное поле.
Для исправления UI у меня есть опция рендеринга Dropdown, доступная в решении вопроса, помеченного выше. Но, как я уже сказал, мне нужно, чтобы он был доступен для поиска.
 Я боролся с той же проблемой несколько недель назад. Так что этот ответ может быть полезен некоторым разработчикам в будущем. 
Мне удалось решить проблему, написав пользовательский template.html
.
Теперь я собрал код в удивительный пакет, который делает то же самое для вас,  вот ссылка .
Вот как можно реализовать выпадающий список с возможностью поиска вместо списка по умолчанию:
1. Установка:
pip install django-admin-searchable-dropdown
 Эта команда установит последнюю версию пакета в ваш проект.
Теперь включите пакет в свой проект, добавив admin_searchable_dropdown к вашему INSTALLED_APPS внутри settings.py файла.
2. Использование:
Допустим, у вас есть следующие модели:
from django.db import models
class CarCompany(models.Model):
    name = models.CharField(max_length=128)
class CarModel(models.Model):
    name = models.CharField(max_length=64)
    company = models.ForeignKey(CarCompany, on_delete=models.CASCADE)
 И вы хотите отфильтровать результаты в CarModelAdmin на основе company. Вам нужно определить search_fields в CarCompany и затем определить фильтр следующим образом:
from django.contrib import admin
from admin_searchable_dropdown.filters import AutocompleteFilter
class CarCompanyFilter(AutocompleteFilter):
    title = 'Company' # display title
    field_name = 'company' # name of the foreign key field
class CarCompanyAdmin(admin.ModelAdmin):
    search_fields = ['name'] # this is required for django's autocomplete functionality
    # ...
class CarModelAdmin(admin.ModelAdmin):
    list_filter = [CarCompanyFilter]
    # ...
После выполнения этих шагов вы можете увидеть фильтр следующим образом:
-  Вот как фильтр списка отображается в виде выпадающего списка при использовании пакета 
 - Выпадающий фильтр также доступен для поиска
 
Предлагаемые функции:
- Если у вас большие поля в фильтре администратора, боковая панель расширяется, этот пакет предоставляет вам тот же список в выпадающем формате, следовательно, нет таких хлопот.
 - Если у вас больше, чем, скажем, 20 элементов поля, фильтр списка становится длинной боковой панелью, просто разрушая интерфейс администратора. Выпадающий фильтр исправляет это.
 -  Выпадающий фильтр также "поисковый", с текстовым полем ввода (которое использует собственную функцию Django 
auto_complete), так что пока версия Django, которую вы используете, выше 2.0, все будет в порядке. -  Вы можете настроить другие 
list_filters, которые у вас могут быть, например, изменить Заголовок над выпадающим меню, или пользовательскую логику поиска и т.д. - Вы можете настроить тексты виджетов для отображения в опции выпадающего списка, чтобы использовать что-то другое, чем по умолчанию 
str(obj).