2011-09-21 10 views
1

ImageField이있는 모델을 직렬화하려고합니다. inbuilt serializer이 serialize하는 것처럼 보일 수 없습니다 및 따라서 사용자 지정 serializer 작성 생각. 장고에서 이미지를 serialize하고 장고의 JSON serializer와 함께 사용하는 방법을 말씀해 주시겠습니까?어떻게 장고에서 ImageField를 직렬화합니까?

감사

답변

5

내에서 사용한다. 대신 이미지를 base643에 직렬화하는 대신 이미지의 경로를 반환합니다. 스 니펫은 다음과 같습니다.

def encode_datetime(obj): 
    """ 
    Extended encoder function that helps to serialize dates and images 
    """ 
    if isinstance(obj, datetime.date): 
     try: 
      return obj.strftime('%Y-%m-%d') 
     except ValueError, e: 
      return '' 

    if isinstance(obj, ImageFieldFile): 
     try: 
      return obj.path 
     except ValueError, e: 
      return '' 

    raise TypeError(repr(obj) + " is not JSON serializable") 
+1

해결책 주셔서 감사합니다. 나는 인정해야한다 -'ImageFieldFile'을 직렬화하지 말고 오히려 ... Django를 우습게 만든다. – yentsun

2

이미지를 직렬화하기 위해서 base64 encoding을 시도 할 수는 내가 simplejson 인코더의 확장을 쓴 JSON

1

이미지이기 때문에 개체를 직렬화 할 수 없습니다. 경로의 문자열 표현을 직렬화해야합니다.

가장 쉬운 방법은 직렬화 할 항목이있을 때 str() 메서드를 호출하는 것입니다.

json.dumps(unicode(my_imagefield)) # py2 
json.dumps(str(my_imagefield)) # py3 

.

+0

이 작품은 나를 위해! 정말 고맙습니다 – Genarito

관련 문제