serializers.py 1.2 KB

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