Добавил теханализ
This commit is contained in:
@@ -290,7 +290,7 @@ class Standard(models.Model):
|
||||
|
||||
# Основные поля
|
||||
name = models.CharField(
|
||||
max_length=20,
|
||||
max_length=80,
|
||||
unique=True,
|
||||
verbose_name="Стандарт",
|
||||
db_index=True,
|
||||
@@ -475,6 +475,123 @@ class ObjItemManager(models.Manager):
|
||||
return self.get_queryset().by_user(user)
|
||||
|
||||
|
||||
class TechAnalyze(models.Model):
|
||||
"""
|
||||
Модель технического анализа сигнала.
|
||||
|
||||
Хранит информацию о технических параметрах сигнала для анализа.
|
||||
"""
|
||||
|
||||
# Основные поля
|
||||
name = models.CharField(
|
||||
max_length=255,
|
||||
unique=True,
|
||||
verbose_name="Имя",
|
||||
db_index=True,
|
||||
help_text="Уникальное название для технического анализа",
|
||||
)
|
||||
satellite = models.ForeignKey(
|
||||
Satellite,
|
||||
on_delete=models.PROTECT,
|
||||
related_name="tech_analyzes",
|
||||
verbose_name="Спутник",
|
||||
help_text="Спутник, к которому относится анализ",
|
||||
)
|
||||
polarization = models.ForeignKey(
|
||||
Polarization,
|
||||
default=get_default_polarization,
|
||||
on_delete=models.SET_DEFAULT,
|
||||
related_name="tech_analyze_polarizations",
|
||||
null=True,
|
||||
blank=True,
|
||||
verbose_name="Поляризация",
|
||||
)
|
||||
frequency = models.FloatField(
|
||||
default=0,
|
||||
null=True,
|
||||
blank=True,
|
||||
verbose_name="Частота, МГц",
|
||||
db_index=True,
|
||||
help_text="Центральная частота сигнала",
|
||||
)
|
||||
freq_range = models.FloatField(
|
||||
default=0,
|
||||
null=True,
|
||||
blank=True,
|
||||
verbose_name="Полоса частот, МГц",
|
||||
help_text="Полоса частот сигнала",
|
||||
)
|
||||
bod_velocity = models.FloatField(
|
||||
default=0,
|
||||
null=True,
|
||||
blank=True,
|
||||
verbose_name="Символьная скорость, БОД",
|
||||
help_text="Символьная скорость",
|
||||
)
|
||||
modulation = models.ForeignKey(
|
||||
Modulation,
|
||||
default=get_default_modulation,
|
||||
on_delete=models.SET_DEFAULT,
|
||||
related_name="tech_analyze_modulations",
|
||||
null=True,
|
||||
blank=True,
|
||||
verbose_name="Модуляция",
|
||||
)
|
||||
standard = models.ForeignKey(
|
||||
Standard,
|
||||
default=get_default_standard,
|
||||
on_delete=models.SET_DEFAULT,
|
||||
related_name="tech_analyze_standards",
|
||||
null=True,
|
||||
blank=True,
|
||||
verbose_name="Стандарт",
|
||||
)
|
||||
note = models.TextField(
|
||||
null=True,
|
||||
blank=True,
|
||||
verbose_name="Примечание",
|
||||
help_text="Дополнительные примечания",
|
||||
)
|
||||
|
||||
# Метаданные
|
||||
created_at = models.DateTimeField(
|
||||
auto_now_add=True,
|
||||
verbose_name="Дата создания",
|
||||
help_text="Дата и время создания записи",
|
||||
)
|
||||
created_by = models.ForeignKey(
|
||||
CustomUser,
|
||||
on_delete=models.SET_NULL,
|
||||
related_name="tech_analyze_created",
|
||||
null=True,
|
||||
blank=True,
|
||||
verbose_name="Создан пользователем",
|
||||
help_text="Пользователь, создавший запись",
|
||||
)
|
||||
updated_at = models.DateTimeField(
|
||||
auto_now=True,
|
||||
verbose_name="Дата последнего изменения",
|
||||
help_text="Дата и время последнего изменения",
|
||||
)
|
||||
updated_by = models.ForeignKey(
|
||||
CustomUser,
|
||||
on_delete=models.SET_NULL,
|
||||
related_name="tech_analyze_updated",
|
||||
null=True,
|
||||
blank=True,
|
||||
verbose_name="Изменен пользователем",
|
||||
help_text="Пользователь, последним изменивший запись",
|
||||
)
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.name} ({self.satellite.name if self.satellite else '-'})"
|
||||
|
||||
class Meta:
|
||||
verbose_name = "Тех. анализ"
|
||||
verbose_name_plural = "Тех. анализы"
|
||||
ordering = ["-created_at"]
|
||||
|
||||
|
||||
class Source(models.Model):
|
||||
"""
|
||||
Модель источника сигнала.
|
||||
|
||||
Reference in New Issue
Block a user