Рефакторинг и деплоинг
This commit is contained in:
@@ -1,11 +1,45 @@
|
||||
# Django imports
|
||||
from django.contrib import admin
|
||||
from .models import Transponders
|
||||
from rangefilter.filters import NumericRangeFilterBuilder
|
||||
from more_admin_filters import MultiSelectDropdownFilter, MultiSelectFilter, MultiSelectRelatedDropdownFilter
|
||||
|
||||
# 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, admin.ModelAdmin):
|
||||
class TranspondersAdmin(ImportExportActionModelAdmin, BaseAdmin):
|
||||
"""
|
||||
Админ-панель для модели Transponders.
|
||||
|
||||
Оптимизирована для работы с транспондерами:
|
||||
- Использует select_related для оптимизации запросов
|
||||
- Предоставляет фильтры по спутникам, поляризации и зоне
|
||||
- Поддерживает импорт/экспорт данных
|
||||
"""
|
||||
list_display = (
|
||||
"sat_id",
|
||||
"name",
|
||||
@@ -16,13 +50,18 @@ class TranspondersAdmin(ImportExportActionModelAdmin, admin.ModelAdmin):
|
||||
"transfer",
|
||||
"polarization",
|
||||
)
|
||||
list_display_links = ("name",)
|
||||
list_select_related = ("polarization", "sat_id")
|
||||
|
||||
list_filter = (
|
||||
("polarization", MultiSelectRelatedDropdownFilter),
|
||||
("sat_id", MultiSelectRelatedDropdownFilter),
|
||||
# ("frequency", NumericRangeFilterBuilder()),
|
||||
"zone_name"
|
||||
("downlink", NumericRangeFilterBuilder()),
|
||||
("uplink", NumericRangeFilterBuilder()),
|
||||
("frequency_range", NumericRangeFilterBuilder()),
|
||||
"zone_name",
|
||||
)
|
||||
search_fields = ("name", "sat_id__name")
|
||||
|
||||
search_fields = ("name", "sat_id__name", "zone_name")
|
||||
ordering = ("name",)
|
||||
# def sat_name(self, obj):
|
||||
# return
|
||||
autocomplete_fields = ("sat_id", "polarization")
|
||||
|
||||
Reference in New Issue
Block a user