Features: 1) Add media property in ProductAdmin to include custom Select2 JS and CSS integration for improved admin interface;

Fixes: 1) Correct list_filter fields for brand and category in ProductAdmin to use proper lookup names;

Extra: 1) Add missing import for forms and get_select2_language from
This commit is contained in:
Egor Pavlovich Gorbunov 2025-06-30 17:13:02 +03:00
parent 027c001d25
commit ef42a7dbe7

View file

@ -3,9 +3,11 @@ from contextlib import suppress
from constance.admin import Config
from constance.admin import ConstanceAdmin as BaseConstanceAdmin
from dalf.admin import DALFRelatedFieldAjax, DALFRelatedOnlyField
from django import forms
from django.apps import apps
from django.contrib import admin
from django.contrib.admin import ModelAdmin, TabularInline
from django.contrib.admin.widgets import get_select2_language
from django.contrib.gis.admin import GISModelAdmin
from django.db.models import Model
from django.utils.translation import gettext_lazy as _
@ -240,8 +242,8 @@ class ProductAdmin(FieldsetsMixin, BasicModelAdmin):
list_filter = (
"is_active",
"is_digital",
("brand__name", DALFRelatedFieldAjax),
("category__name", DALFRelatedFieldAjax),
("brand", DALFRelatedFieldAjax),
("category", DALFRelatedFieldAjax),
("tags", DALFRelatedOnlyField),
("stocks__vendor", DALFRelatedOnlyField),
"created",
@ -262,6 +264,27 @@ class ProductAdmin(FieldsetsMixin, BasicModelAdmin):
general_fields = ["is_active", "name", "partnumber", "is_digital"]
relation_fields = ["category", "brand", "tags"]
@property
def media(self):
i18n_name = get_select2_language()
i18n_file = (f"admin/js/vendor/select2/i18n/{i18n_name}.js",) if i18n_name else ()
return super().media + forms.Media(
js=(
"admin/js/vendor/jquery/jquery.min.js",
"admin/js/vendor/select2/select2.full.min.js",
*i18n_file,
"admin/js/jquery.init.js",
"admin/js/django_admin_list_filter.js",
),
css={
"screen": (
"admin/css/vendor/select2/select2.min.css",
"admin/css/autocomplete.css",
"admin/css/django_admin_list_filter.css",
),
},
)
@admin.register(ProductTag)
class ProductTagAdmin(FieldsetsMixin, BasicModelAdmin):