First commite

This commit is contained in:
Pavel Sobolev
2025-11-12 23:49:00 +03:00
commit c4bb087aaf
28 changed files with 2090 additions and 0 deletions

67
cv/models.py Normal file
View File

@@ -0,0 +1,67 @@
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