使用Django 3.3保存JSON数据



正如我们所知,Django=3支持JSONField。我正试图使用JavaScript在Django项目中保存JSON数据,我在输入字段中获取数据,该字段看起来像:

[{"id":1,"Name":"Antenna","Pieces":"","Weight":"","Weight Types":"","Quantity":"12",
"Cargo Charge":"12","Customs Charge":"12"},
{"id":2,"Name":"Soap","Pieces":"12","Weight":"12","Weight Types":"","Quantity":"",
"Cargo Charge":"12","Customs Charge":"12"}]

在输入字段中,我使用将数据保存到MySql数据库中。

product_list = self.request.POST['product_list_json']

因此,product_list_json是inout字段的名称。但保存的数据有不同的视图,保存的数据看起来像:

"[{"id":1,"Name":"Antenna","Pieces":"","Weight":"","Weight Types":"",
"Quantity":"12","Cargo Charge":"12","Customs Charge":"12"},
{"id":2,"Name":"Soap","Pieces":"12","Weight":"12","Weight Types":"",
"Quantity":"","Cargo Charge":"12","Customs Charge":"12"}]"

问题是,数据是用额外的"\保存的">。我能做些什么来解决这个问题?

Django中的Jsonfield,获取dict或列表并将其转换为JSON(str(并保存在DB中,只需从请求中加载收到的JSON即可。POST并发送它,它就会正常工作。

Simple CharField可以为您工作。它可以像这样工作。

models.py

class subscription_info(models.Model):
info=models.CharField(max_length=2000,null=True,blank=True)

views.py

from myApp.models import subscription_info as sInfo
def For_AJAX(request):
if request.method=='POST':
data=request.body.decode('utf-8')
mymodel=sInfo()
mymodel.info=data
mymodel.save()
return HttpResponse(status=201)
else:
return HttpResponse(status=204)
def For_Form(request):
if request.method=='POST':
data=request.POST.get('InputFieldName')          
mymodel=sInfo()
mymodel.info=data
mymodel.save()
return HttpResponse(status=201)
else:
return HttpResponse(status=204)

从数据库检索数据后,根据您的要求使用json.loads()json.dumps()

最新更新