1+
12from django .contrib .auth import get_user_model
23from rest_framework import serializers
34
4- from core .fields import CustomListField
55from projects .models import Project
66from users .serializers import UserDetailSerializer
77from vacancy .models import Vacancy , VacancyResponse
88
99User = get_user_model ()
1010
1111
12+ class RequiredSkillsSerializerMixin (serializers .Serializer ):
13+ required_skills = serializers .SerializerMethodField ()
14+
15+ def get_required_skills (self , obj ):
16+ skills_string = obj .required_skills
17+ skills = [skill .strip () for skill in skills_string .split ("," ) if skill .strip ()]
18+ return skills
19+
20+
1221class ProjectForVacancySerializer (serializers .ModelSerializer ):
1322 class Meta :
1423 model = Project
@@ -20,9 +29,8 @@ class Meta:
2029 ]
2130
2231
23- class VacancyDetailSerializer (serializers .ModelSerializer ):
32+ class VacancyDetailSerializer (serializers .ModelSerializer , RequiredSkillsSerializerMixin ):
2433 project = ProjectForVacancySerializer (many = False , read_only = True )
25- required_skills = serializers .ListSerializer (child = serializers .CharField ())
2634
2735 class Meta :
2836 model = Vacancy
@@ -36,14 +44,10 @@ class Meta:
3644 "datetime_created" ,
3745 "datetime_updated" ,
3846 ]
39- read_only_fields = [
40- "project" ,
41- ]
47+ read_only_fields = ["project" ]
4248
4349
44- class VacancyListSerializer (serializers .ModelSerializer ):
45- required_skills = CustomListField (child = serializers .CharField ())
46-
50+ class VacancyListSerializer (serializers .ModelSerializer , RequiredSkillsSerializerMixin ):
4751 class Meta :
4852 model = Vacancy
4953 fields = [
@@ -58,9 +62,9 @@ class Meta:
5862 ]
5963
6064
61- class ProjectVacancyListSerializer (serializers . ModelSerializer ):
62- required_skills = CustomListField ( child = serializers .CharField ())
63-
65+ class ProjectVacancyListSerializer (
66+ serializers .ModelSerializer , RequiredSkillsSerializerMixin
67+ ):
6468 class Meta :
6569 model = Vacancy
6670 fields = [
0 commit comments