from django.db import models class Profile(models.Model): GENDER_CHOICES = [ ('male', 'Мужской'), ('female', 'Женский'), ] full_name = models.CharField(max_length=200, verbose_name="ФИО") role = models.CharField(max_length=120, verbose_name="Роль") gender = models.CharField(max_length=10, choices=GENDER_CHOICES, verbose_name="Пол") summary = models.TextField(verbose_name="Краткое описание") location = models.CharField(max_length=120, verbose_name="Местоположение") languages = models.JSONField(default=list, verbose_name="Языки") email = models.EmailField(null=True, blank=True, verbose_name="Email") phone = models.CharField(max_length=20, null=True, blank=True, verbose_name="Телефон") telegram = models.CharField(max_length=40, null=True, blank=True, verbose_name="Telegram") git = models.URLField(null=True, blank=True, verbose_name="Git") photo = models.ImageField(upload_to='photos/', null=True, blank=True, verbose_name="Фото") created_at = models.DateTimeField(auto_now_add=True, verbose_name="Дата создания") updated_at = models.DateTimeField(auto_now=True, verbose_name="Дата обновления") class Meta: db_table = "profile" verbose_name = "Профиль" verbose_name_plural = "Профили" def __str__(self): return self.full_name class Experience(models.Model): profile = models.ForeignKey(Profile, on_delete=models.CASCADE, related_name="experience", verbose_name="Профиль") company = models.CharField(max_length=200, verbose_name="Компания") start_date = models.DateField(verbose_name="Дата начала") end_date = models.DateField(null=True, blank=True, verbose_name="Дата окончания") summary = models.TextField(verbose_name="Краткое описание") achievements = models.JSONField(default=list, verbose_name="Достижения") tech = models.JSONField(default=list, verbose_name="Технологии") class Meta: db_table = "experience" ordering = ["-start_date"] verbose_name = "Опыт работы" verbose_name_plural = "Опыт работы" def __str__(self): return f"{self.profile.full_name} - {self.company}" class SkillGroup(models.Model): """Группы навыков с массивом значений, как в JSON.""" profile = models.ForeignKey(Profile, on_delete=models.CASCADE, related_name="skills_map", verbose_name="Профиль") group = models.CharField(max_length=100, verbose_name="Группа") items = models.JSONField(default=list, verbose_name="Элементы") class Meta: db_table = "skill_group" verbose_name = "Группа навыков" verbose_name_plural = "Группы навыков" def __str__(self): return self.group