1

众所周知,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"}]

从输入字段中,我使用.

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\"}]"

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

4

2 回答 2

0

Django中的Jsonfield,接受一个字典或一个列表并将它们转换为JSON(str)并将它们保存在数据库中,只需从request.POST加载接收到的JSON并发送它就可以了。

于 2021-07-13T10:50:17.780 回答
0

简单的 CharField 可以为您工作。它可以像这样工作。

模型.py

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

视图.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()根据您的要求。

于 2021-07-13T12:23:25.260 回答