11from django .forms .models import model_to_dict
22from rest_framework import serializers
33
4- from industries .models import Industry
54from .models import CustomUser , Expert , Investor , Member , Mentor , UserAchievement
65
76
@@ -20,6 +19,14 @@ def to_internal_value(self, data):
2019 return "," .join (data )
2120
2221
22+ class CustomListField (serializers .ListField ):
23+ # костыль
24+ def to_representation (self , data ):
25+ if type (data ) == list :
26+ return data
27+ return [i .replace ("'" , "" ) for i in data .strip ("][" ).split (", " )]
28+
29+
2330class MemberSerializer (serializers .ModelSerializer ):
2431 class Meta :
2532 model = Member
@@ -39,8 +46,8 @@ class Meta:
3946
4047class ExpertSerializer (serializers .ModelSerializer ):
4148
42- preferred_industries = serializers . ListSerializer (
43- child = serializers .PrimaryKeyRelatedField ( queryset = Industry . objects . all ())
49+ preferred_industries = CustomListField (
50+ child = serializers .CharField ( max_length = 255 ),
4451 )
4552
4653 class Meta :
@@ -53,9 +60,7 @@ class Meta:
5360
5461class InvestorSerializer (serializers .ModelSerializer ):
5562
56- preferred_industries = serializers .ListSerializer (
57- child = serializers .PrimaryKeyRelatedField (queryset = Industry .objects .all ())
58- )
63+ preferred_industries = CustomListField (child = serializers .CharField (max_length = 255 ))
5964
6065 class Meta :
6166 model = Investor
@@ -107,17 +112,18 @@ def update(self, instance, validated_data):
107112 instance .investor .__dict__ .update (
108113 validated_data .get ("investor" , model_to_dict (instance .investor ))
109114 )
110- instance .investor .preferred_industries . set (
111- validated_data . get ( "investor" , {}). get ( "preferred_industries" , [])
112- )
115+ instance .investor .preferred_industries = validated_data . get (
116+ "investor" , {}
117+ ). get ( "preferred_industries" , [])
113118 instance .investor .save ()
114119 elif instance .user_type == CustomUser .EXPERT :
115120 instance .expert .__dict__ .update (
116121 validated_data .get ("expert" , model_to_dict (instance .expert ))
117122 )
118- instance .expert .preferred_industries . set (
119- validated_data . get ( "expert" , {}). get ( " preferred_industries" , [])
123+ instance .expert .preferred_industries = validated_data . get ( "expert" , {}). get (
124+ " preferred_industries" , []
120125 )
126+ print ("expert" , instance .expert .preferred_industries )
121127 instance .expert .save ()
122128 elif instance .user_type == CustomUser .MENTOR :
123129 instance .mentor .__dict__ .update (
0 commit comments