diff --git a/.gitignore b/.gitignore index 8a466f4..aff9bfc 100644 --- a/.gitignore +++ b/.gitignore @@ -16,4 +16,5 @@ data.json django-leaflet admin-interface -docker-* \ No newline at end of file +docker-* +maplibre-gl-js-5.10.0.zip \ No newline at end of file diff --git a/dbapp/mainapp/admin.py b/dbapp/mainapp/admin.py index 56198ac..6c9b831 100644 --- a/dbapp/mainapp/admin.py +++ b/dbapp/mainapp/admin.py @@ -98,6 +98,8 @@ class GeoInline(admin.StackedInline): verbose_name_plural = "Гео" form = LocationForm readonly_fields = ("distance_coords_kup", "distance_coords_valid", "distance_kup_valid") + prefetch_related = ("mirrors",) + autocomplete_fields = ('mirrors',) fieldsets = ( ("Основная информация", { "fields": ("mirrors", "location", "distance_coords_kup", @@ -223,7 +225,7 @@ class ParameterAdmin(ImportExportActionModelAdmin, admin.ModelAdmin): ) ordering = ("frequency",) list_select_related = ("polarization", "modulation", "standard", "id_satellite",) - filter_horizontal = ('objitems',) # For many-to-many relationship + autocomplete_fields = ('objitems',) # raw_id_fields = ("id_sigma_parameter", ) inlines = [SigmaParameterInline] # autocomplete_fields = ("id_sigma_parameter", ) @@ -402,44 +404,17 @@ def show_on_map(modeladmin, request, queryset): show_on_map.short_description = "Показать выбранные на карте" -class ObjItemForm(forms.ModelForm): - parameter = forms.ModelChoiceField( - queryset=Parameter.objects.all(), - required=False, - label="Параметр" - ) - - class Meta: - model = ObjItem - fields = '__all__' - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - # Set initial value if the ObjItem already has a parameter - if self.instance.pk: - first_param = self.instance.parameters_obj.first() - if first_param: - self.fields['parameter'].initial = first_param - - def save(self, commit=True): - instance = super().save(commit=commit) - - # Handle the single parameter assignment - replace all existing relationships - if self.cleaned_data.get('parameter'): - # Clear all existing parameter relationships - instance.parameters_obj.clear() - # Add the selected parameter - instance.parameters_obj.add(self.cleaned_data['parameter']) - else: - # If no parameter selected, clear all - instance.parameters_obj.clear() - - return instance +class ParameterObjItemInline(admin.StackedInline): + model = ObjItem.parameters_obj.through + extra = 0 + max_num = 1 + verbose_name = "ВЧ загрузка" + verbose_name_plural = "ВЧ загрузки" + @admin.register(ObjItem) class ObjectAdmin(admin.ModelAdmin): - form = ObjItemForm list_display = ( "name", "sat_name", @@ -475,9 +450,11 @@ class ObjectAdmin(admin.ModelAdmin): ) ordering = ("name",) - inlines = [GeoInline] + inlines = [ParameterObjItemInline, GeoInline] actions = [show_on_map] + + def get_queryset(self, request): qs = super().get_queryset(request) return qs.select_related('geo_obj').prefetch_related( diff --git a/dbapp/mainapp/forms.py b/dbapp/mainapp/forms.py index edc4943..aef2fce 100644 --- a/dbapp/mainapp/forms.py +++ b/dbapp/mainapp/forms.py @@ -60,12 +60,12 @@ class VchLinkForm(forms.Form): 'class': 'form-select' }) ) - ku_range = forms.ChoiceField( - choices=[(9750.0, '9750'), (10750.0, '10750')], - # coerce=lambda x: x == 'True', - widget=forms.Select(attrs={'class': 'form-select'}), - label='Выбор диапазона' - ) + # ku_range = forms.ChoiceField( + # choices=[(9750.0, '9750'), (10750.0, '10750')], + # # coerce=lambda x: x == 'True', + # widget=forms.Select(attrs={'class': 'form-select'}), + # label='Выбор диапазона' + # ) value1 = forms.FloatField( label="Первое число", widget=forms.NumberInput(attrs={ diff --git a/dbapp/mainapp/templates/mainapp/link_vch.html b/dbapp/mainapp/templates/mainapp/link_vch.html index 65de198..3ffdf14 100644 --- a/dbapp/mainapp/templates/mainapp/link_vch.html +++ b/dbapp/mainapp/templates/mainapp/link_vch.html @@ -20,7 +20,7 @@ {% endfor %} {% endif %} -
Введите допустимый разброс для частоты и полосы(в кГц)
+Введите допустимый разброс для частоты и полосы