serializers.py 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. # coding=utf-8
  2. import datetime
  3. from rest_framework import serializers
  4. from .models import *
  5. from django.conf import settings
  6. from utils.booleancharfield import PriceShowCharField
  7. from apps.base import Formater
  8. class PackageSerializer(serializers.ModelSerializer):
  9. create_user_text = serializers.CharField(source='create_user.username', read_only=True)
  10. create_time_f = serializers.DateTimeField(source='create_time', format=settings.SHORT_DATETIME_FORMAT,
  11. read_only=True)
  12. amount = PriceShowCharField(read_only=True)
  13. give_amount = PriceShowCharField(read_only=True)
  14. class Meta:
  15. model = Package
  16. fields = '__all__'
  17. def create(self, validated_data):
  18. validated_data['create_user'] = self.context['request'].user
  19. validated_data['amount'] = Formater.formatPrice(self.initial_data['amount'])
  20. validated_data['give_amount'] = Formater.formatPrice(self.initial_data['give_amount'])
  21. instance = super(PackageSerializer, self).create(validated_data)
  22. instance.save()
  23. return instance
  24. def update(self, instance, validated_data):
  25. validated_data['amount'] = Formater.formatPrice(self.initial_data['amount'])
  26. validated_data['give_amount'] = Formater.formatPrice(self.initial_data['give_amount'])
  27. instance = super(PackageSerializer, self).update(instance, validated_data)
  28. instance.save()
  29. return instance
  30. class OrderSerializer(serializers.ModelSerializer):
  31. create_user_text = serializers.CharField(source='create_user.username', read_only=True)
  32. create_time_f = serializers.DateTimeField(source='create_time', format=settings.SHORT_DATETIME_FORMAT,
  33. read_only=True)
  34. status_text = serializers.CharField(source='get_status_display', read_only=True)
  35. total_amount = PriceShowCharField(read_only=True)
  36. balance_deduction = PriceShowCharField(read_only=True)
  37. actual_amount = PriceShowCharField(read_only=True)
  38. class Meta:
  39. model = Order
  40. fields = '__all__'
  41. def create(self, validated_data):
  42. validated_data['create_user'] = self.context['request'].user
  43. validated_data['total_amount'] = abs(Formater.formatPrice(self.initial_data['total_amount']))
  44. instance = super(OrderSerializer, self).create(validated_data)
  45. instance.no = instance.get_no()
  46. instance.save()
  47. return instance