diff --git a/dbapp/mainapp/admin.py b/dbapp/mainapp/admin.py
index da66777..663ea33 100644
--- a/dbapp/mainapp/admin.py
+++ b/dbapp/mainapp/admin.py
@@ -573,12 +573,13 @@ class SatelliteAdmin(BaseAdmin):
list_display = (
"name",
"norad",
+ "international_code",
"undersat_point",
"launch_date",
"created_at",
"updated_at",
)
- search_fields = ("name", "norad")
+ search_fields = ("name", "norad", "international_code")
ordering = ("name",)
filter_horizontal = ("band",)
autocomplete_fields = ("band",)
diff --git a/dbapp/mainapp/forms.py b/dbapp/mainapp/forms.py
index 1359b76..c66c6ca 100644
--- a/dbapp/mainapp/forms.py
+++ b/dbapp/mainapp/forms.py
@@ -816,6 +816,7 @@ class SatelliteForm(forms.ModelForm):
fields = [
'name',
'norad',
+ 'international_code',
'band',
'undersat_point',
'url',
@@ -832,6 +833,10 @@ class SatelliteForm(forms.ModelForm):
'class': 'form-control',
'placeholder': 'Введите NORAD ID'
}),
+ 'international_code': forms.TextInput(attrs={
+ 'class': 'form-control',
+ 'placeholder': 'Например, 2011-074A'
+ }),
'band': forms.SelectMultiple(attrs={
'class': 'form-select',
'size': '5'
@@ -858,6 +863,7 @@ class SatelliteForm(forms.ModelForm):
labels = {
'name': 'Название спутника',
'norad': 'NORAD ID',
+ 'international_code': 'Международный код',
'band': 'Диапазоны работы',
'undersat_point': 'Подспутниковая точка (градусы)',
'url': 'Ссылка на источник',
@@ -867,6 +873,7 @@ class SatelliteForm(forms.ModelForm):
help_texts = {
'name': 'Уникальное название спутника',
'norad': 'Идентификатор NORAD для отслеживания спутника',
+ 'international_code': 'Международный идентификатор спутника (например, 2011-074A)',
'band': 'Выберите диапазоны работы спутника (удерживайте Ctrl для множественного выбора)',
'undersat_point': 'Восточное полушарие с +, западное с -',
'url': 'Ссылка на сайт, где можно проверить информацию',
diff --git a/dbapp/mainapp/migrations/0015_add_international_code_to_satellite.py b/dbapp/mainapp/migrations/0015_add_international_code_to_satellite.py
new file mode 100644
index 0000000..609a2ef
--- /dev/null
+++ b/dbapp/mainapp/migrations/0015_add_international_code_to_satellite.py
@@ -0,0 +1,18 @@
+# Generated by Django 5.2.7 on 2025-11-26 20:20
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('mainapp', '0014_source_note'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='satellite',
+ name='international_code',
+ field=models.CharField(blank=True, help_text='Международный идентификатор спутника (например, 2011-074A)', max_length=20, null=True, verbose_name='Международный код'),
+ ),
+ ]
diff --git a/dbapp/mainapp/models.py b/dbapp/mainapp/models.py
index d68b03f..c4fa522 100644
--- a/dbapp/mainapp/models.py
+++ b/dbapp/mainapp/models.py
@@ -350,6 +350,13 @@ class Satellite(models.Model):
verbose_name="NORAD ID",
help_text="Идентификатор NORAD для отслеживания спутника",
)
+ international_code = models.CharField(
+ max_length=50,
+ blank=True,
+ null=True,
+ verbose_name="Международный код",
+ help_text="Международный идентификатор спутника (например, 2011-074A)",
+ )
band = models.ManyToManyField(
Band,
related_name="bands",
diff --git a/dbapp/mainapp/templates/mainapp/satellite_form.html b/dbapp/mainapp/templates/mainapp/satellite_form.html
index 7419c68..925d601 100644
--- a/dbapp/mainapp/templates/mainapp/satellite_form.html
+++ b/dbapp/mainapp/templates/mainapp/satellite_form.html
@@ -107,17 +107,17 @@
-
@@ -140,6 +140,25 @@
+
+
+
+
+ {{ form.band.label }}
+
+ {{ form.band }}
+ {% if form.band.errors %}
+
+ {{ form.band.errors.0 }}
+
+ {% endif %}
+ {% if form.band.help_text %}
+
{{ form.band.help_text }}
+ {% endif %}
+
+
+
+
diff --git a/dbapp/mainapp/templates/mainapp/satellite_list.html b/dbapp/mainapp/templates/mainapp/satellite_list.html
index b1dae13..bc72afa 100644
--- a/dbapp/mainapp/templates/mainapp/satellite_list.html
+++ b/dbapp/mainapp/templates/mainapp/satellite_list.html
@@ -200,6 +200,16 @@
{% endif %}
+
+
+ Международный код
+ {% if sort == 'international_code' %}
+
+ {% elif sort == '-international_code' %}
+
+ {% endif %}
+
+ |
Диапазоны |
@@ -265,6 +275,7 @@
| {{ satellite.id }} |
{{ satellite.name }} |
{{ satellite.norad }} |
+
{{ satellite.international_code|default:"-" }} |
{{ satellite.bands }} |
{{ satellite.undersat_point }} |
{{ satellite.launch_date }} |
@@ -296,7 +307,7 @@
{% empty %}
- | Нет данных для отображения |
+ Нет данных для отображения |
{% endfor %}
diff --git a/dbapp/mainapp/views/satellite.py b/dbapp/mainapp/views/satellite.py
index 26a56ec..b70cfcb 100644
--- a/dbapp/mainapp/views/satellite.py
+++ b/dbapp/mainapp/views/satellite.py
@@ -139,6 +139,8 @@ class SatelliteListView(LoginRequiredMixin, View):
"-name": "-name",
"norad": "norad",
"-norad": "-norad",
+ "international_code": "international_code",
+ "-international_code": "-international_code",
"undersat_point": "undersat_point",
"-undersat_point": "-undersat_point",
"launch_date": "launch_date",
@@ -168,6 +170,7 @@ class SatelliteListView(LoginRequiredMixin, View):
'id': satellite.id,
'name': satellite.name or "-",
'norad': satellite.norad if satellite.norad else "-",
+ 'international_code': satellite.international_code or "-",
'bands': ", ".join(band_names) if band_names else "-",
'undersat_point': f"{satellite.undersat_point:.2f}" if satellite.undersat_point is not None else "-",
'launch_date': satellite.launch_date.strftime("%d.%m.%Y") if satellite.launch_date else "-",
diff --git a/dbapp/manage.py b/dbapp/manage.py
index 21e03b5..1d33d3e 100644
--- a/dbapp/manage.py
+++ b/dbapp/manage.py
@@ -1,22 +1,22 @@
-#!/usr/bin/env python
-"""Django's command-line utility for administrative tasks."""
-import os
-import sys
-
-
-def main():
- """Run administrative tasks."""
- os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dbapp.settings')
- try:
- from django.core.management import execute_from_command_line
- except ImportError as exc:
- raise ImportError(
- "Couldn't import Django. Are you sure it's installed and "
- "available on your PYTHONPATH environment variable? Did you "
- "forget to activate a virtual environment?"
- ) from exc
- execute_from_command_line(sys.argv)
-
-
-if __name__ == '__main__':
- main()
+#!/usr/bin/env python
+"""Django's command-line utility for administrative tasks."""
+import os
+import sys
+
+
+def main():
+ """Run administrative tasks."""
+ os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dbapp.settings')
+ try:
+ from django.core.management import execute_from_command_line
+ except ImportError as exc:
+ raise ImportError(
+ "Couldn't import Django. Are you sure it's installed and "
+ "available on your PYTHONPATH environment variable? Did you "
+ "forget to activate a virtual environment?"
+ ) from exc
+ execute_from_command_line(sys.argv)
+
+
+if __name__ == '__main__':
+ main()