serializers.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. # coding=utf-8
  2. from rest_framework import serializers
  3. from .models import KnowledgeBase, KnowledgeBaseFeedback
  4. from utils.exceptions import CustomError
  5. class KnowledgeBaseSerializer(serializers.ModelSerializer):
  6. subject_name = serializers.CharField(source='chapter.subject.name', read_only=True)
  7. subject = serializers.CharField(source='chapter.subject.id', read_only=True)
  8. chapter_name = serializers.CharField(source='chapter.name', read_only=True)
  9. create_user_text = serializers.CharField(source='create_user.name', read_only=True)
  10. class Meta:
  11. model = KnowledgeBase
  12. fields = "__all__"
  13. def create(self, validated_data):
  14. validated_data['create_user'] = self.context['request'].user
  15. instance = super(KnowledgeBaseSerializer, self).create(validated_data)
  16. return instance
  17. def update(self, instance, validated_data):
  18. if instance.delete:
  19. raise CustomError(u'知识[%s]已经被删除,禁止操作' % instance.name)
  20. instance = super(KnowledgeBaseSerializer, self).update(instance, validated_data)
  21. return instance
  22. class KnowledgeBaseFeedbackSerializer(serializers.ModelSerializer):
  23. subject_name = serializers.CharField(source='main.chapter.subject.name', read_only=True)
  24. chapter_name = serializers.CharField(source='main.chapter.name', read_only=True)
  25. name = serializers.CharField(source='main.name', read_only=True)
  26. type_text = serializers.CharField(source='get_type_display', read_only=True)
  27. status_text = serializers.CharField(source='get_status_display', read_only=True)
  28. create_user_text = serializers.CharField(source='create_user.name', read_only=True)
  29. class Meta:
  30. model = KnowledgeBaseFeedback
  31. fields = "__all__"
  32. def create(self, validated_data):
  33. validated_data['create_user'] = self.context['request'].user
  34. instance = super(KnowledgeBaseFeedbackSerializer, self).create(validated_data)
  35. return instance