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!我会试试这个 –