1
我有以下JSON作爲輸入從客戶端當輸入是json時,保存模型的最佳方法是什麼?
[
{'id': 0, 'name': 'Housing', 'value': 3},
{'id': 1, 'name': 'Bank', 'value': 8},
{'id': 2, 'name': 'Entertainment', 'value': 3}
]
它被分配到inputV_wc對象在我看來,像下面
查看:
def savemore(request):
if request.method == "POST":
data=json.loads(request.body.decode())
inputV_wc = data['wc']
else:
response_data = 'You have not saved any data!'
return HttpResponse(response_data, content_type="text/plain")
try:
if not inputV_wc:
test=''
else:
# WC - Insert wc again on each save rather update - time consuming
if js_wex.objects.filter(pid = request.session.get('pid')).exists():
js_wex.objects.filter(pid=request.session.get('pid')).delete()
wc = js_wex(pid=request.session.get('pid'), wcname=inputV_wc[0]['name'],rating=inputV_wc[0]['value'],ordernum=inputV_wc[0]['id'])
wc.save()
wc = js_wex(pid=request.session.get('pid'), wcname=inputV_wc[1]['name'],rating=inputV_wc[1]['value'],ordernum=inputV_wc[1]['id'])
wc.save()
wc = js_wex(pid=request.session.get('pid'), wcname=inputV_wc[2]['name'],rating=inputV_wc[2]['value'],ordernum=inputV_wc[2]['id'])
wc.save()
except Exception as e:
response_data = 'Ouch! Something went wrong!'+str(e)
return HttpResponse(response_data, content_type="text/plain")
目前,如果我輸入的JSON有5行,當然,上面的視圖失敗,索引超出範圍。 ,如果輸入json有2行,它再次失敗,缺少條目 - 模型不能保存。
我怎麼能寫我的看法,例如,如果JSON已經改變對象的數目一樣
輸入從一個用戶 -
[
{'id': 0, 'name': 'Housing', 'value': 3},
{'id': 1, 'name': 'Bank', 'value': 18},
{'id': 2, 'name': 'Housing1', 'value': 14},
{'id': 3, 'name': 'Bank1', 'value': 12}
]
可以 - 從其他用戶
[
{'id': 0, 'name': 'Housing', 'value': 14},
{'id': 1, 'name': 'Bank', 'value': 18}
]
輸入處理?
對於每個輸入,Json行可以從1到15最大。
我讀了關於使用** kwargs,處理類似的情況..但我無法弄清楚如何申請保存我的模型的各種json輸入。
是賈斯汀,與for循環或手動版本,我們必須遍歷數據庫多次爲每一行..有沒有更好的方法來完成這一步嗎? (到DB) –
偉大的問題。你可以使用'bulk_create'。看到我上面的更新。 –
非常感謝Justin!我會試試這個 –