serializers.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. # coding=utf-8
  2. from django.conf import settings
  3. from rest_framework import serializers
  4. from apps.product.models import Product, ProductImg
  5. from apps.base import Formater
  6. from apps.customer.models import Customer
  7. from apps.foundation.models import Option, Config
  8. class ProductSerializer(serializers.ModelSerializer):
  9. cover_url = serializers.SerializerMethodField()
  10. price = serializers.SerializerMethodField()
  11. def get_cover_url(self, obj):
  12. if obj.cover:
  13. return {'width': obj.cover.width, 'height': obj.cover.height, 'url': obj.cover.get_path()}
  14. return ''
  15. def get_price(self, obj):
  16. return Formater.formatPriceShow(obj.price)
  17. class Meta:
  18. model = Product
  19. fields = ('id', 'cover_url', 'name', 'notes', 'price')
  20. class ProductDetailSerializer(serializers.ModelSerializer):
  21. price = serializers.SerializerMethodField()
  22. Product_images = serializers.SerializerMethodField()
  23. has_cover = serializers.SerializerMethodField()
  24. cover = serializers.SerializerMethodField()
  25. def get_cover(self, obj):
  26. if obj.cover:
  27. return {'width': obj.cover.width, 'height': obj.cover.height, 'url': obj.cover.get_path()}
  28. return ''
  29. def get_has_cover(self, obj):
  30. if obj.cover:
  31. return True
  32. return False
  33. def get_Product_images(self, obj):
  34. result = []
  35. rows = ProductImg.objects.filter(product=obj).values('img__picture', 'img__width', 'img__height')
  36. for row in rows:
  37. url = {'width': row['img__width'], 'height': row['img__height'], 'url': '%s%s%s' % (settings.SERVER_DOMAIN, settings.MEDIA_URL, row['img__picture'])}
  38. result.append(url)
  39. return result
  40. def get_price(self, obj):
  41. return Formater.formatAmountShow(obj.discount_price)
  42. class Meta:
  43. model = Product
  44. fields = (
  45. 'id', 'name', 'Product_images', 'describe',
  46. 'notes', 'has_cover', 'give_count', 'cover'
  47. )
  48. class ProductTypeSerializer(serializers.ModelSerializer):
  49. class Meta:
  50. model = Option
  51. fields = ('id', 'name')