feat: добавлена модель TeamMember для управления командой через админку

This commit is contained in:
2025-11-24 09:23:45 +09:00
parent 3cea013a8e
commit ce7119e9e9
6 changed files with 294 additions and 3 deletions

View File

@@ -341,3 +341,66 @@ class FooterSettings(models.Model):
super().save(*args, **kwargs)
class TeamMember(models.Model):
"""Модель для членов команды"""
# Basic Info
first_name = models.CharField(max_length=100, verbose_name='Имя')
last_name = models.CharField(max_length=100, verbose_name='Фамилия')
position = models.CharField(max_length=200, verbose_name='Должность')
# Photo
photo = models.ImageField(
upload_to='static/img/team/',
blank=True,
null=True,
verbose_name='Фотография'
)
# Bio
bio = models.TextField(
blank=True,
verbose_name='Биография',
help_text='Краткое описание специалиста'
)
# Skills/Specialization
specialization = models.TextField(
blank=True,
verbose_name='Специализация',
help_text='Области экспертизы, навыки'
)
# Social Links
email = models.EmailField(blank=True, verbose_name='Email')
phone = models.CharField(max_length=50, blank=True, verbose_name='Телефон')
telegram = models.CharField(max_length=100, blank=True, verbose_name='Telegram')
linkedin = models.URLField(blank=True, verbose_name='LinkedIn')
github = models.URLField(blank=True, verbose_name='GitHub')
# Order and Status
order = models.IntegerField(
default=0,
verbose_name='Порядок сортировки',
help_text='Чем меньше число, тем выше в списке'
)
is_active = models.BooleanField(default=True, verbose_name='Активен')
# Timestamps
created_at = models.DateTimeField(auto_now_add=True, verbose_name='Создано')
updated_at = models.DateTimeField(auto_now=True, verbose_name='Обновлено')
class Meta:
verbose_name = 'Член команды'
verbose_name_plural = 'Команда'
ordering = ['order', 'last_name', 'first_name']
def __str__(self):
return f"{self.first_name} {self.last_name} - {self.position}"
@property
def full_name(self):
return f"{self.first_name} {self.last_name}"