# Django imports from django.contrib import admin # Third-party imports from import_export.admin import ImportExportActionModelAdmin from more_admin_filters import MultiSelectRelatedDropdownFilter from rangefilter.filters import NumericRangeFilterBuilder # Local imports from .models import Transponders # ============================================================================ # Base Admin Classes # ============================================================================ class BaseAdmin(admin.ModelAdmin): """ Базовый класс для всех admin моделей mapsapp. Предоставляет общую функциональность: - Кнопки сохранения сверху и снизу - Настройка количества элементов на странице """ save_on_top = True list_per_page = 50 # ============================================================================ # Admin Classes # ============================================================================ @admin.register(Transponders) class TranspondersAdmin(ImportExportActionModelAdmin, BaseAdmin): """ Админ-панель для модели Transponders. Оптимизирована для работы с транспондерами: - Использует select_related для оптимизации запросов - Предоставляет фильтры по спутникам, поляризации и зоне - Поддерживает импорт/экспорт данных """ list_display = ( "sat_id", "name", "zone_name", "downlink", "uplink", "frequency_range", "transfer", "polarization", ) list_display_links = ("name",) list_select_related = ("polarization", "sat_id") list_filter = ( ("polarization", MultiSelectRelatedDropdownFilter), ("sat_id", MultiSelectRelatedDropdownFilter), ("downlink", NumericRangeFilterBuilder()), ("uplink", NumericRangeFilterBuilder()), ("frequency_range", NumericRangeFilterBuilder()), "zone_name", ) search_fields = ("name", "sat_id__name", "zone_name") ordering = ("name",) autocomplete_fields = ("sat_id", "polarization")