serializers.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. # coding=utf-8
  2. from rest_framework import serializers
  3. from .models import Option
  4. from utils.exceptions import CustomError
  5. class OptionSerializer(serializers.ModelSerializer):
  6. type_name = serializers.CharField(source='get_type_display', read_only=True)
  7. enable_text = serializers.SerializerMethodField()
  8. end_stage_text = serializers.SerializerMethodField()
  9. def get_enable_text(self,obj):
  10. if obj.enable:
  11. return '是'
  12. return '否'
  13. def get_end_stage_text(self,obj):
  14. if obj.end_stage:
  15. return '是'
  16. return '否'
  17. class Meta:
  18. model = Option
  19. fields = '__all__'
  20. def create(self, validated_data):
  21. validated_data['create_user'] = self.context['request'].user
  22. is_exist = Option.is_exist(validated_data['type'], validated_data['name'])
  23. if is_exist:
  24. raise CustomError(u'自定义项[%s]已存在!' % validated_data['name'])
  25. instance = super(OptionSerializer,self).create(validated_data)
  26. return instance
  27. def update(self, instance, validated_data):
  28. is_exist = Option.is_exist(validated_data['type'], validated_data['name'], instance.id)
  29. if is_exist:
  30. raise CustomError(u'自定义项[%s]已存在!' % validated_data['name'])
  31. instance = super(OptionSerializer, self).update(instance, validated_data)
  32. return instance
  33. class OptionComboboxSerializer(serializers.ModelSerializer):
  34. class Meta:
  35. model = Option
  36. fields = ('id','name','track_day')