Features: 1) Add custom media property to ProductAdmin for enhanced select2 functionality and styling;
Fixes: 1) Replace `DALFModelAdmin` with `ModelAdmin` in `ProductAdmin` class; 2) Remove invalid use of `DALFChoicesField` for `list_filter` in `ProductAdmin`; Extra: 1) Add missing import for `forms` and `get_select2_language`; 2) General cleanup and refactoring of `ProductAdmin` class.
This commit is contained in:
parent
9cb62295b2
commit
9ababbcfa2
1 changed files with 29 additions and 6 deletions
|
|
@ -2,9 +2,11 @@ from contextlib import suppress
|
|||
|
||||
from constance.admin import Config
|
||||
from constance.admin import ConstanceAdmin as BaseConstanceAdmin
|
||||
from dalf.admin import DALFChoicesField, DALFModelAdmin, DALFRelatedFieldAjax, DALFRelatedOnlyField
|
||||
from dalf.admin import DALFRelatedFieldAjax, DALFRelatedOnlyField
|
||||
from django import forms
|
||||
from django.apps import apps
|
||||
from django.contrib.admin import ModelAdmin, TabularInline, action, register, site
|
||||
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 _
|
||||
|
|
@ -231,7 +233,7 @@ class BrandAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
|||
|
||||
|
||||
@register(Product)
|
||||
class ProductAdmin(FieldsetsMixin, ActivationActionsMixin, DALFModelAdmin):
|
||||
class ProductAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||
model = Product # type: ignore
|
||||
list_display = (
|
||||
"name",
|
||||
|
|
@ -244,14 +246,14 @@ class ProductAdmin(FieldsetsMixin, ActivationActionsMixin, DALFModelAdmin):
|
|||
"modified",
|
||||
)
|
||||
list_filter = (
|
||||
("is_active", DALFChoicesField),
|
||||
("is_digital", DALFChoicesField),
|
||||
"is_active",
|
||||
"is_digital",
|
||||
("brand", DALFRelatedFieldAjax),
|
||||
("category", DALFRelatedFieldAjax),
|
||||
("tags", DALFRelatedFieldAjax),
|
||||
("stocks__vendor", DALFRelatedOnlyField),
|
||||
("created", DALFChoicesField),
|
||||
("modified", DALFChoicesField)
|
||||
"created",
|
||||
"modified",
|
||||
)
|
||||
search_fields = (
|
||||
"name",
|
||||
|
|
@ -268,6 +270,27 @@ class ProductAdmin(FieldsetsMixin, ActivationActionsMixin, DALFModelAdmin):
|
|||
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",
|
||||
),
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
@register(ProductTag)
|
||||
class ProductTagAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||
|
|
|
|||
Loading…
Reference in a new issue