serializers.py 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. # coding=utf-8
  2. from rest_framework import serializers
  3. from django.utils import timezone
  4. from .models import *
  5. from utils.exceptions import CustomError
  6. from utils.booleancharfield import PriceShowCharField
  7. from apps.order.models import Order
  8. from apps.base import Formater
  9. from utils.booleancharfield import BooleanCharField
  10. class ConfigSerializer(serializers.ModelSerializer):
  11. class Meta:
  12. model = Config
  13. fields = '__all__'
  14. class SchoolSerializer(serializers.ModelSerializer):
  15. enable_text = serializers.SerializerMethodField()
  16. def get_enable_text(self, obj):
  17. if obj.enable:
  18. return '是'
  19. return '否'
  20. class Meta:
  21. model = School
  22. fields = '__all__'
  23. class GradeSerializer(serializers.ModelSerializer):
  24. school_text = serializers.CharField(source='school.name', read_only=True)
  25. class Meta:
  26. model = Grade
  27. fields = '__all__'
  28. def create(self, validated_data):
  29. count = self.initial_data.get('count')
  30. if int(count) > 30:
  31. raise CustomError(u'班級数量不能大于30个!')
  32. instance = super(GradeSerializer, self).create(validated_data)
  33. if instance.count > 0:
  34. for count in range(1, instance.count + 1):
  35. Classes.objects.create(grade=instance, name=u'{}班'.format(count), enable=True)
  36. return instance
  37. def update(self, instance, validated_data):
  38. count = self.initial_data.get('count')
  39. if int(count) > 30:
  40. raise CustomError(u'班級数量不能大于30个!')
  41. instance = super(GradeSerializer, self).update(instance, validated_data)
  42. Classes.objects.filter(grade=instance).update(enable=False)
  43. for count in range(1, instance.count + 1):
  44. classes, create = Classes.objects.get_or_create(grade=instance, name=u'{}班'.format(count))
  45. if not create:
  46. classes.enable = True
  47. classes.save()
  48. return instance
  49. class StudentSerializer(serializers.ModelSerializer):
  50. school_text = serializers.CharField(source='school.name', read_only=True)
  51. grade_text = serializers.CharField(source='classes.grade.name', read_only=True)
  52. classes_text = serializers.CharField(source='classes.name', read_only=True)
  53. create_user_text = serializers.CharField(source='create_user.username', read_only=True)
  54. create_time_f = serializers.DateTimeField(source='create_time', format=settings.SHORT_DATETIME_FORMAT,
  55. read_only=True)
  56. enable_text = BooleanCharField(source='enable', read_only=True)
  57. class Meta:
  58. model = Student
  59. fields = '__all__'
  60. def create(self, validated_data):
  61. validated_data['create_user'] = self.context['request'].user
  62. instance = super(StudentSerializer, self).create(validated_data)
  63. return instance
  64. def update(self, instance, validated_data):
  65. instance = super(StudentSerializer, self).update(instance, validated_data)
  66. return instance