First commite
This commit is contained in:
67
cv/models.py
Normal file
67
cv/models.py
Normal 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
|
||||
Reference in New Issue
Block a user