Features: 1) Add django-admin-autocomplete-list-filter dependency to manage autocomplete functionality in admin list filters; 2) Enable autocomplete_list_filter for ProductAdmin with fields category, author, and tags.

Fixes: None;

Extra: 1) Update `poetry.lock` with `django-admin-autocomplete-list-filter` details; 2) Register `djaa_list_filter` in installed apps.
This commit is contained in:
Egor Pavlovich Gorbunov 2025-07-01 16:02:03 +03:00
parent 8fe572ac1f
commit 283c3232cc
4 changed files with 17 additions and 2 deletions

View file

@ -2,6 +2,7 @@ from contextlib import suppress
from constance.admin import Config from constance.admin import Config
from constance.admin import ConstanceAdmin as BaseConstanceAdmin from constance.admin import ConstanceAdmin as BaseConstanceAdmin
from djaa_list_filter.admin import AjaxAutocompleteListFilterModelAdmin
from django.apps import apps from django.apps import apps
from django.contrib.admin import ModelAdmin, TabularInline, action, register, site from django.contrib.admin import ModelAdmin, TabularInline, action, register, site
from django.contrib.gis.admin import GISModelAdmin from django.contrib.gis.admin import GISModelAdmin
@ -230,7 +231,7 @@ class BrandAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
@register(Product) @register(Product)
class ProductAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): class ProductAdmin(FieldsetsMixin, ActivationActionsMixin, AjaxAutocompleteListFilterModelAdmin):
model = Product # type: ignore model = Product # type: ignore
list_display = ( list_display = (
"name", "name",
@ -249,6 +250,7 @@ class ProductAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
"created", "created",
"modified", "modified",
) )
autocomplete_list_filter = ("category", "author", "tags")
search_fields = ( search_fields = (
"name", "name",
"partnumber", "partnumber",

View file

@ -108,6 +108,7 @@ INSTALLED_APPS: list[str] = [
"django.contrib.sitemaps", "django.contrib.sitemaps",
"django.contrib.gis", "django.contrib.gis",
"django.contrib.humanize", "django.contrib.humanize",
"djaa_list_filter",
"health_check", "health_check",
"health_check.db", "health_check.db",
"health_check.cache", "health_check.cache",

13
poetry.lock generated
View file

@ -1056,6 +1056,17 @@ tzdata = {version = "*", markers = "sys_platform == \"win32\""}
argon2 = ["argon2-cffi (>=19.1.0)"] argon2 = ["argon2-cffi (>=19.1.0)"]
bcrypt = ["bcrypt"] bcrypt = ["bcrypt"]
[[package]]
name = "django-admin-autocomplete-list-filter"
version = "1.0.1"
description = "Ajax autocomplete list filter for Django admin"
optional = false
python-versions = ">=3.0"
files = [
{file = "django-admin-autocomplete-list-filter-1.0.1.tar.gz", hash = "sha256:135d840cf337ad0f8823fbdb128cefaba65ae0867a87422b9f495f3fa50b204c"},
{file = "django_admin_autocomplete_list_filter-1.0.1-py3-none-any.whl", hash = "sha256:2252f75eb6c72f2bc2c98da84986584d8a202b8734d1e53c59cb5b36f52cb0f5"},
]
[[package]] [[package]]
name = "django-cacheops" name = "django-cacheops"
version = "7.2" version = "7.2"
@ -5136,4 +5147,4 @@ worker = ["celery", "celery-prometheus-exporter", "django-celery-beat", "django-
[metadata] [metadata]
lock-version = "2.0" lock-version = "2.0"
python-versions = ">=3.12,<3.13" python-versions = ">=3.12,<3.13"
content-hash = "58d67f7b6c2313bdb117965a9c9555319bbb059db043e5723d39a27c36695939" content-hash = "6b5537ef47925ae7382697c6be4362fb3c918f2ab256c9bd2a9a8f33a6f6e02c"

View file

@ -14,6 +14,7 @@ colorlog = "6.9.0"
click = "8.2.1" click = "8.2.1"
cryptography = "45.0.4" cryptography = "45.0.4"
django = "5.2" django = "5.2"
django-admin-autocomplete-list-filter = "1.0.1"
django-cacheops = "7.2" django-cacheops = "7.2"
django-celery-beat = { version = "2.8.1", optional = true } django-celery-beat = { version = "2.8.1", optional = true }
django-celery-results = { version = "2.6.0", optional = true } django-celery-results = { version = "2.6.0", optional = true }