Админка: горизонтальные фильтры в справочниках
Фильтры справочников (Directory, Системи доступу) вынесены из боковой панели наверх в тулбар (unfold list_filter_sheet=False), кастомные фильтры переведены на unfold DropdownFilter — выпадающие списки вместо списка ссылок. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+7
-4
@@ -7,6 +7,7 @@ from django.utils.translation import gettext_lazy as _
|
||||
from django.urls import reverse
|
||||
from unfold.admin import ModelAdmin
|
||||
from unfold.decorators import action
|
||||
from unfold.contrib.filters.admin import DropdownFilter
|
||||
from treenode.forms import TreeNodeForm
|
||||
from django.forms import TextInput, Textarea
|
||||
from django.db.models import Count
|
||||
@@ -15,7 +16,7 @@ from import_export.admin import ImportExportModelAdmin
|
||||
from unfold.contrib.import_export.forms import ExportForm, ImportForm
|
||||
|
||||
# Register your models here.
|
||||
class DirectoryTypeFilter(SimpleListFilter):
|
||||
class DirectoryTypeFilter(DropdownFilter):
|
||||
title = _('Тип справочника')
|
||||
parameter_name = 'directory_type'
|
||||
|
||||
@@ -26,8 +27,8 @@ class DirectoryTypeFilter(SimpleListFilter):
|
||||
if self.value():
|
||||
return queryset.filter(directory_type_id=self.value())
|
||||
return queryset
|
||||
|
||||
class ActiveFilter(SimpleListFilter):
|
||||
|
||||
class ActiveFilter(DropdownFilter):
|
||||
title = _('Статус')
|
||||
parameter_name = 'is_active'
|
||||
|
||||
@@ -134,6 +135,7 @@ class DirectoryAdmin(ModelAdmin, ImportExportModelAdmin):
|
||||
list_display = ['name_with_hierarchy', 'directory_type', 'code', 'is_active', 'updated_at']
|
||||
list_display_links = ['name_with_hierarchy']
|
||||
list_filter = [DirectoryTypeFilter, ActiveFilter]
|
||||
list_filter_sheet = False # фильтры сверху горизонтально, а не в боковой панели
|
||||
ordering = ('_path',)
|
||||
actions_list = ['rebuild_tree_action']
|
||||
|
||||
@@ -225,7 +227,8 @@ class AccessSystemAdmin(ModelAdmin):
|
||||
"""Отдельный раздел для списка систем/баз доступа (1С, почта, CRM…),
|
||||
которые выбираются чекбоксами в заявке на найм."""
|
||||
list_display = ['name', 'code', 'is_active', 'updated_at']
|
||||
list_filter = ['is_active']
|
||||
list_filter = [ActiveFilter]
|
||||
list_filter_sheet = False
|
||||
search_fields = ['name', 'code']
|
||||
ordering = ['name']
|
||||
fields = ['name', 'code', 'description', 'is_active']
|
||||
|
||||
Reference in New Issue
Block a user