diff --git a/core/admin.py b/core/admin.py index d46527f7..1db9e9ed 100644 --- a/core/admin.py +++ b/core/admin.py @@ -2,6 +2,7 @@ from contextlib import suppress from constance.admin import Config from constance.admin import ConstanceAdmin as BaseConstanceAdmin +from djaa_list_filter.admin import AjaxAutocompleteListFilterModelAdmin from django.apps import apps from django.contrib.admin import ModelAdmin, TabularInline, action, register, site from django.contrib.gis.admin import GISModelAdmin @@ -230,7 +231,7 @@ class BrandAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): @register(Product) -class ProductAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): +class ProductAdmin(FieldsetsMixin, ActivationActionsMixin, AjaxAutocompleteListFilterModelAdmin): model = Product # type: ignore list_display = ( "name", @@ -249,6 +250,7 @@ class ProductAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): "created", "modified", ) + autocomplete_list_filter = ("category", "author", "tags") search_fields = ( "name", "partnumber", diff --git a/evibes/settings/base.py b/evibes/settings/base.py index d03f904c..b865ff79 100644 --- a/evibes/settings/base.py +++ b/evibes/settings/base.py @@ -108,6 +108,7 @@ INSTALLED_APPS: list[str] = [ "django.contrib.sitemaps", "django.contrib.gis", "django.contrib.humanize", + "djaa_list_filter", "health_check", "health_check.db", "health_check.cache", diff --git a/poetry.lock b/poetry.lock index 556e591b..00badf82 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1056,6 +1056,17 @@ tzdata = {version = "*", markers = "sys_platform == \"win32\""} argon2 = ["argon2-cffi (>=19.1.0)"] 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]] name = "django-cacheops" version = "7.2" @@ -5136,4 +5147,4 @@ worker = ["celery", "celery-prometheus-exporter", "django-celery-beat", "django- [metadata] lock-version = "2.0" python-versions = ">=3.12,<3.13" -content-hash = "58d67f7b6c2313bdb117965a9c9555319bbb059db043e5723d39a27c36695939" +content-hash = "6b5537ef47925ae7382697c6be4362fb3c918f2ab256c9bd2a9a8f33a6f6e02c" diff --git a/pyproject.toml b/pyproject.toml index 1d362f5d..590b7f8c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,6 +14,7 @@ colorlog = "6.9.0" click = "8.2.1" cryptography = "45.0.4" django = "5.2" +django-admin-autocomplete-list-filter = "1.0.1" django-cacheops = "7.2" django-celery-beat = { version = "2.8.1", optional = true } django-celery-results = { version = "2.6.0", optional = true }