2015-04-28 109 views
0

我正在運行一個類型錯誤,在運行以下代碼之後聲稱<Store: test store> is not JSON serializabledjango:您如何爲JSON轉儲創建自定義編碼器?

def storeliqour_view(request, store_id): 

    objects = StoreLiquor.objects.filter(storeID=store_id) 
    list_display = ['StoreLiquorID', 'storeID', 'StorePrice', 'SPI'] 

    # extract information 
    data = [[getattr(obj, field) for field in list_display] for obj in objects] 

    #define response 
    response = { 
     'aaData': data, 
     'iTotalRecords': iTotalRecords, 
     'iTotalDisplayRecords': iTotalDisplayRecords, 
     'sEcho': request.GET['sEcho'] 
    } 

    #serialize to json 
    s = BytesIO() 
    json.dump(response, s, cls=MainEncoder) 
    s.seek(0) 
    return HttpResponse(s.read()) 

在錯誤的<Store: test store>來自我調用storeID場,這是一個外鍵Store模型。這應該返回商店的名稱,在這種情況下,「測試商店」。這產生TypeError

我想寫一個自定義編碼器,它將允許我返回基於storeID的商店名稱。但我似乎無法弄清楚。正如下面的代碼所示,我確實正確地編碼了小數,但我該如何繼續?如果我可以將表單完全更改爲html,那將會特別酷,或許可以將它變成鏈接。

class MainEncoder(json.JSONEncoder): 

    def default(self, obj): 

     if isinstance(obj, Decimal): 
      obj = float(obj) 
     else: 
      obj = super(MainEncoder, self).default(obj) 
     return obj 

回答

相關問題