11from __future__ import unicode_literals
22
3- from uuid import UUID
4-
53from django .conf import settings
64from django .core .exceptions import ObjectDoesNotExist
75from django .db .models import NOT_PROVIDED , DateTimeField
@@ -19,18 +17,24 @@ def get_field_value(obj, field):
1917 :return: The value of the field as a string.
2018 :rtype: str
2119 """
20+ raw_value = getattr (obj , field .name , None )
2221 if isinstance (field , DateTimeField ):
2322 # DateTimeFields are timezone-aware, so we need to convert the field
2423 # to its naive form before we can accuratly compare them for changes.
2524 try :
26- value = field .to_python (getattr ( obj , field . name , None ) )
25+ value = field .to_python (raw_value )
2726 if value is not None and settings .USE_TZ and not timezone .is_naive (value ):
2827 value = timezone .make_naive (value , timezone = timezone .utc )
2928 except ObjectDoesNotExist :
3029 value = field .default if field .default is not NOT_PROVIDED else None
30+ elif isinstance (raw_value , bytes ):
31+ if len (raw_value ) > 100 :
32+ return repr (raw_value [:100 ]) + '[truncated {} bytes]' .format (len (raw_value ) - 100 )
33+ else :
34+ return repr (raw_value )
3135 else :
3236 try :
33- value = smart_text (getattr ( obj , field . name , None ) )
37+ value = smart_text (raw_value )
3438 except ObjectDoesNotExist :
3539 value = field .default if field .default is not NOT_PROVIDED else None
3640
0 commit comments