feat: добавлена модель TeamMember для управления командой через админку
This commit is contained in:
@@ -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}"
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user