123 lines
4.0 KiB
Python
123 lines
4.0 KiB
Python
"""
|
||
Модель спутника.
|
||
"""
|
||
from django.db import models
|
||
|
||
|
||
class Satellite(models.Model):
|
||
"""
|
||
Модель спутника.
|
||
|
||
Представляет спутник связи с его основными характеристиками.
|
||
"""
|
||
PLACES = [
|
||
("kr", "КР"),
|
||
("dv", "ДВ")
|
||
]
|
||
|
||
# Основные поля
|
||
name = models.CharField(
|
||
max_length=100,
|
||
unique=True,
|
||
verbose_name="Имя спутника",
|
||
db_index=True,
|
||
help_text="Название спутника",
|
||
)
|
||
alternative_name = models.CharField(
|
||
max_length=100,
|
||
blank=True,
|
||
null=True,
|
||
verbose_name="Альтернативное имя",
|
||
db_index=True,
|
||
help_text="Альтернативное название спутника",
|
||
)
|
||
location_place = models.CharField(
|
||
max_length=30,
|
||
choices=PLACES,
|
||
null=True,
|
||
default="kr",
|
||
verbose_name="Комплекс",
|
||
help_text="К какому комплексу принадлежит спутник",
|
||
)
|
||
norad = models.IntegerField(
|
||
blank=True,
|
||
null=True,
|
||
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(
|
||
'mainapp.Band',
|
||
related_name="bands",
|
||
verbose_name="Диапазоны",
|
||
blank=True,
|
||
help_text="Диапазоны работы спутника",
|
||
)
|
||
undersat_point = models.FloatField(
|
||
blank=True,
|
||
null=True,
|
||
verbose_name="Подспутниковая точка, градусы",
|
||
help_text="Подспутниковая точка в градусах. Восточное полушарие с +, западное с -",
|
||
)
|
||
url = models.URLField(
|
||
blank=True,
|
||
null=True,
|
||
verbose_name="Ссылка на источник",
|
||
help_text="Ссылка на сайт, где можно проверить информацию",
|
||
)
|
||
comment = models.TextField(
|
||
blank=True,
|
||
null=True,
|
||
verbose_name="Комментарий",
|
||
help_text="Любой возможный комменатрий",
|
||
)
|
||
launch_date = models.DateField(
|
||
blank=True,
|
||
null=True,
|
||
verbose_name="Дата запуска",
|
||
help_text="Дата запуска спутника",
|
||
)
|
||
|
||
created_at = models.DateTimeField(
|
||
auto_now_add=True,
|
||
verbose_name="Дата создания",
|
||
help_text="Дата и время создания записи",
|
||
)
|
||
created_by = models.ForeignKey(
|
||
'mainapp.CustomUser',
|
||
on_delete=models.SET_NULL,
|
||
related_name="satellite_created",
|
||
null=True,
|
||
blank=True,
|
||
verbose_name="Создан пользователем",
|
||
help_text="Пользователь, создавший запись",
|
||
)
|
||
updated_at = models.DateTimeField(
|
||
auto_now=True,
|
||
verbose_name="Дата последнего изменения",
|
||
help_text="Дата и время последнего изменения",
|
||
)
|
||
updated_by = models.ForeignKey(
|
||
'mainapp.CustomUser',
|
||
on_delete=models.SET_NULL,
|
||
related_name="satellite_updated",
|
||
null=True,
|
||
blank=True,
|
||
verbose_name="Изменен пользователем",
|
||
help_text="Пользователь, последним изменивший запись",
|
||
)
|
||
|
||
def __str__(self):
|
||
return self.name
|
||
|
||
class Meta:
|
||
verbose_name = "Спутник"
|
||
verbose_name_plural = "Спутники"
|
||
ordering = ["name"]
|