【发布时间】:2019-03-29 18:48:01
【问题描述】:
我尝试使用此代码将我的 JSON 数据保存到我的模型 Mvouchar。但是得到这个错误。我很容易通过 cmd 获取数据,但我试图将其保存在我的模型中,然后我得到了错误,为什么会发生这种情况,我认为我犯了一些小错误但无法捕捉到,如果你遇到我的问题,请帮忙
#views.py
@csrf_exempt
def jsdata(request):
table_data = json.loads(request.POST.get('MyData'))
print(table_data)
for data in table_data:
b_no = request.POST['billno']
b_details = request.POST['billdetails']
at = request.POST['amount2']
record = Mvouchar(bill_no = data.b_no, bill_details = data.b_details,am=data.at)
record.save()
return render(request, 'cheque/mvouchar.html', {'msg': 'Data Saved.'})
#models.py
class Mvouchar(models.Model):
related = models.ForeignKey(Signs, on_delete=models.CASCADE, null=True, blank=True)
bill_no = models.CharField(max_length=80, null=True, blank=True)
bill_details = models.CharField(max_length=1000, null=True, blank=True)
am = models.CharField(max_length=30, null=True, blank=True)
vouchar_no = models.CharField(max_length=1000, null=True, blank=True)
#urls.py
url(r'jsondata/$', views.jsdata, name='jsondata'),
#script
<script>
$("#btnjson").click(function () {
var array1 = [];
$("tbody tr").each(function () {
var firstTableData = {};
firstTableData.BillNo = $(this).find('td').eq(0).text();
firstTableData.BillDetails = $(this).find('td').eq(1).text();
firstTableData.Amount = $(this).find('td').eq(2).text();
array1.push(firstTableData);
//}
});
alert(JSON.stringify(array1));
$.ajax({
type: "POST",
url: "/jsondata/",
dataType: 'json',
data: {MyData: JSON.stringify(array1)},
success: function(msg){
alert(msg);
}
});
return false;
} );
});
</script>
【问题讨论】:
-
您能否发布正在控制台中打印的
table_data。 -
当请求数据中不存在key时,可能会发生此错误。
-
现在请看我的问题,我用 print table_data 插入图像
-
从您的 ajax 中,您只发送一个包含您的 json 字符串的数组 MyData。您希望如何在您的视图中获得
request.POST['billno']。它不存在,您从未发送过它。我认为在你的 ajax 中你应该发布data: JSON.stringify(array1),没有必要将 json 放在另一个对象中。 -
nvm 我看到你正在发送一个数组来创建多个对象,所以你发送 json 的方式是好的。我以为你只会创建一个对象。
标签: python jquery json django django-models