|
@@ -1,7 +1,8 @@
|
|
|
# coding=utf-8
|
|
|
+import json
|
|
|
from rest_framework import serializers
|
|
|
-
|
|
|
from apps.option.models import Option
|
|
|
+from utils.exceptions import CustomError
|
|
|
from apps.option.serializers import OptionSerializer
|
|
|
from .models import ReportCustomer
|
|
|
|
|
@@ -9,9 +10,9 @@ class ReportCustomerSerializer(serializers.ModelSerializer):
|
|
|
gender_text = serializers.CharField(source='get_gender_display', read_only=True)
|
|
|
report_status_text = serializers.CharField(source='get_report_status_display', read_only=True)
|
|
|
check_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
|
|
|
- project = serializers.SerializerMethodField()
|
|
|
+ project_text = serializers.SerializerMethodField()
|
|
|
|
|
|
- def get_project(self, obj):
|
|
|
+ def get_project_text(self, obj):
|
|
|
return OptionSerializer(obj.project, many=True).data
|
|
|
|
|
|
class Meta:
|
|
@@ -19,11 +20,26 @@ class ReportCustomerSerializer(serializers.ModelSerializer):
|
|
|
fields = '__all__'
|
|
|
|
|
|
def create(self, validated_data):
|
|
|
- print(111111111,int(self.initial_data['project']))
|
|
|
- # validated_data['project'] = self.initial_data['project']
|
|
|
instance = super(ReportCustomerSerializer, self).create(validated_data)
|
|
|
+ projects = self.initial_data['project']
|
|
|
+ if projects:
|
|
|
+ projects = json.loads(projects)
|
|
|
+ else:
|
|
|
+ raise CustomError(u'请选择项目')
|
|
|
+
|
|
|
+ for project in projects:
|
|
|
+ instance.project.add(project)
|
|
|
return instance
|
|
|
|
|
|
- # def update(self, instance, validated_data):
|
|
|
- # if instance.project == self.initial_data['project']
|
|
|
+ def update(self, instance, validated_data):
|
|
|
+ instance = super(ReportCustomerSerializer, self).update(instance, validated_data)
|
|
|
+ projects = self.initial_data['project']
|
|
|
+ if projects:
|
|
|
+ projects = json.loads(projects)
|
|
|
+ else:
|
|
|
+ raise CustomError(u'请选择项目')
|
|
|
+
|
|
|
+ for project in projects:
|
|
|
+ instance.project.add(project)
|
|
|
+ return instance
|
|
|
|