serializersfield.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #coding=utf-8
  2. from django.utils import timezone
  3. from rest_framework import serializers
  4. def getAttributeValue(instance, obj):
  5. if '.' in instance.source:
  6. k = instance.source.split('.')
  7. for i in range(len(k)):
  8. if hasattr(obj, k[i]):
  9. obj = getattr(obj, k[i])
  10. val = obj
  11. else:
  12. val = getattr(obj, instance.source)
  13. return val
  14. class BooleanCharField(serializers.BooleanField):
  15. def get_attribute(self, obj):
  16. return obj
  17. def to_representation(self, obj):
  18. val = getAttributeValue(self, obj)
  19. return u'是' if val else u'否'
  20. class DelayTimeCharField(serializers.CharField):
  21. def get_attribute(self, obj):
  22. return obj
  23. def to_representation(self, obj):
  24. val = getAttributeValue(self, obj)
  25. delay = timezone.now() - val
  26. if delay:
  27. if delay.days:
  28. delay = u'{}天前'.format(delay.days)
  29. elif delay.seconds:
  30. delay = delay.seconds / 60
  31. if delay < 60:
  32. delay =u'{}分钟前'.format(int(delay))
  33. elif delay < 60 * 24:
  34. delay = u'{}小时前'.format(int(delay / 60))
  35. else:
  36. delay = u''
  37. else:
  38. delay = u''
  39. return delay