0
我正在運行一個類型錯誤,在運行以下代碼之後聲稱<Store: test store> is not JSON serializable
。django:您如何爲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