|
1 | 1 | from django.contrib.auth import get_user_model |
2 | 2 | from django.contrib.contenttypes.fields import GenericForeignKey |
3 | 3 | from django.contrib.contenttypes.models import ContentType |
4 | | -from django.db.models import Model |
5 | 4 | from django.db import models |
| 5 | +from django.db.models import Model |
6 | 6 |
|
7 | 7 | User = get_user_model() |
8 | 8 |
|
@@ -99,3 +99,54 @@ class Meta: |
99 | 99 |
|
100 | 100 | def __str__(self): |
101 | 101 | return f"View<{self.user} - {self.content_object}>" |
| 102 | + |
| 103 | + |
| 104 | +class Skill(models.Model): |
| 105 | + """ |
| 106 | + Skill model |
| 107 | + """ |
| 108 | + |
| 109 | + skill = models.CharField(max_length=256, null=False) |
| 110 | + |
| 111 | + class Meta: |
| 112 | + verbose_name = "Навык" |
| 113 | + verbose_name_plural = "Навыки" |
| 114 | + ordering = ["skill"] |
| 115 | + |
| 116 | + |
| 117 | +class UserSkillTag(models.Model): |
| 118 | + """ |
| 119 | + User skill tag model |
| 120 | + """ |
| 121 | + |
| 122 | + skill_tag = models.CharField(max_length=256, null=False) |
| 123 | + skill = models.ForeignKey( |
| 124 | + Skill, |
| 125 | + on_delete=models.CASCADE, |
| 126 | + related_name="tags", |
| 127 | + ) |
| 128 | + |
| 129 | + class Meta: |
| 130 | + verbose_name = "Тег навыка" |
| 131 | + verbose_name_plural = "Теги навыков" |
| 132 | + ordering = ["skill_tag"] |
| 133 | + |
| 134 | + |
| 135 | +class SkillToObject(models.Model): |
| 136 | + """ |
| 137 | + Skill model for skill_2_user/vacancy/project/etc relation |
| 138 | + """ |
| 139 | + |
| 140 | + skill = models.ForeignKey( |
| 141 | + Skill, |
| 142 | + on_delete=models.CASCADE, |
| 143 | + related_name="skills", |
| 144 | + ) |
| 145 | + |
| 146 | + content_type = models.ForeignKey( |
| 147 | + ContentType, |
| 148 | + on_delete=models.CASCADE, |
| 149 | + related_name="skills", |
| 150 | + ) |
| 151 | + object_id = models.PositiveIntegerField() |
| 152 | + content_object = GenericForeignKey("content_type", "object_id") |
0 commit comments