serializers.py 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. # coding=utf-8
  2. from rest_framework import serializers
  3. from django.conf import settings
  4. from apps.upload.models import Upload
  5. from .models import Commodity, CommodityImages
  6. from apps.base import Formater
  7. from utils.booleancharfield import PriceShowCharField
  8. class CommoditySerializer(serializers.ModelSerializer):
  9. create_time_f = serializers.DateTimeField(source='create_time', format=settings.SHORT_DATETIME_FORMAT,
  10. read_only=True)
  11. create_user_text = serializers.CharField(source='create_user.name', read_only=True)
  12. main_image_url = serializers.CharField(source='main_image.picture', read_only=True)
  13. list_image_url = serializers.CharField(source='list_image.picture', read_only=True)
  14. detail_image = serializers.SerializerMethodField()
  15. price = PriceShowCharField()
  16. amount = PriceShowCharField(read_only=True)
  17. status_text = serializers.CharField(source='get_status_display', read_only=True)
  18. def get_detail_image(self, obj):
  19. count = CommodityImages.objects.filter(product=obj, type=CommodityImages.DETAILS).count()
  20. return count
  21. class Meta:
  22. model = Commodity
  23. fields = '__all__'
  24. def create(self, validated_data):
  25. validated_data['create_user'] = self.context['request'].user
  26. validated_data['price'] = Formater.formatPrice(self.initial_data['price'])
  27. validated_data['amount'] = Formater.formatPrice(self.initial_data['price']) * int(self.initial_data['days'])
  28. instance = super(CommoditySerializer, self).create(validated_data)
  29. return instance
  30. def update(self, instance, validated_data):
  31. validated_data['price'] = Formater.formatPrice(self.initial_data['price'])
  32. validated_data['amount'] = Formater.formatPrice(self.initial_data['price']) * int(self.initial_data['days'])
  33. instance = super(CommoditySerializer, self).update(instance, validated_data)
  34. return instance
  35. class WxCommoditySerizlizer(serializers.ModelSerializer):
  36. amount = PriceShowCharField()
  37. list_image = serializers.SerializerMethodField()
  38. def get_list_image(self, obj):
  39. if obj.list_image:
  40. return obj.list_image.get_path()
  41. else:
  42. return ''
  43. class Meta:
  44. model = Commodity
  45. fields = ('id', 'name', 'introduce', 'amount', 'list_image', )
  46. class WxCommodityDetailsSerializer(serializers.ModelSerializer):
  47. amount = PriceShowCharField()
  48. main_image = serializers.SerializerMethodField()
  49. detail_images = serializers.SerializerMethodField()
  50. price = PriceShowCharField()
  51. def get_main_image(self, obj):
  52. if obj.main_image:
  53. return obj.main_image.get_path()
  54. else:
  55. return ''
  56. def get_detail_images(self, obj):
  57. detail_images = CommodityImages.objects.filter(product=obj, type=CommodityImages.DETAILS)
  58. detail_image = []
  59. for i in detail_images:
  60. detail_image.append(i.image.get_path())
  61. return detail_image
  62. class Meta:
  63. model = Commodity
  64. fields = (
  65. 'id', 'name', 'amount', 'introduce', 'main_image', 'detail_images', 'price', 'days'
  66. )