gpt4 book ai didi

python - 当输入为 json 时,保存模型的最佳方式是什么?

转载 作者:太空宇宙 更新时间:2023-11-03 17:11:01 26 4
gpt4 key购买 nike

我有以下 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 行,那么上面的 View 肯定会因索引超出范围而失败。如果输入 json 有 2 行,它会再次失败并缺少条目 - 无法保存模型。

如何编写我的 View ,以便如果 json 具有不同数量的对象,例如

来自一位用户的输入 -

[
{'id': 0, 'name': 'Housing', 'value': 14},
{'id': 1, 'name': 'Bank', 'value': 18}
]

来自其他用户的输入 -

[
{'id': 0, 'name': 'Housing', 'value': 3},
{'id': 1, 'name': 'Bank', 'value': 18},
{'id': 2, 'name': 'Housing1', 'value': 14},
{'id': 3, 'name': 'Bank1', 'value': 12}
]

可以处理吗?

每个输入的 Json 行最多可以为 1 到 15 行。

我读到关于使用 **kwargs 来处理类似的场景..但我不知道如何申请保存我的模型以适应不同的 json 输入。

最佳答案

如果我理解正确的话,我想你只是想使用 for statement :

for row in inputV_wc:
wc = js_wex(pid=request.session.get('pid'), wcname=row['name'], rating=row['value'], ordernum=row['id'])
wc.save()

如果您想一次插入所有对象,根据您所显示的内容,您可能可以使用 bulk_create :

rows = []
for row in inputV_wc:
wc = js_wex(pid=request.session.get('pid'), wcname=row['name'], rating=row['value'], ordernum=row['id'])
rows.append(wc)

js_wex.objects.bulk_create(rows)

关于python - 当输入为 json 时,保存模型的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34088753/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com