DJang多值json格式字典在mysql表中的存储问题

2024-09-30 01:30:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我的模板中有下面的ajax调用

临时.html

function saveprof() {
            $.ajax({
                type: "POST",
                url: "saveprof",
                async: true,
                data: {
                    'radinput_Aj' : fun(),
                    'csrfmiddlewaretoken': $("input[name=csrfmiddlewaretoken]").val()
                },
                success: function (data, textStatus, jqXHR) {
                    $('#message').html(data);
                }
            });
        }

fun()返回一个json格式的object v-如下所示:

示例:

var v = [
             { axis: "", value: 4, order: 0 },
             { axis: "", value: 4, order: 1 },
             { axis: "", value: 4, order: 2 },
             { axis: "", value: 4, order: 3 },
             { axis: "", value: 4, order: 4 },
             { axis: "", value: 4, order: 5 },
             { axis: "", value: 4, order: 6 }
    ];

视图.py

def saveprof(request):
if request.method == "POST":
    radinputV=[]
    radinputV = request.POST.get('radinput_Aj')
else:
    response_data = 'Nothing to update!'
    return HttpResponse(response_data, content_type="text/plain")
response_data = ''
try:
*(Here, I would like to insert the incoming dictionary (radinputV) rows into my model skills)*
except:
    response_data = 'Ouch! Something went wrong!'
return HttpResponse(response_data, content_type="text/plain")

以下是技能模型:

class skills(models.Model):
id = models.CharField(max_length=300,blank=True)
skill = models.CharField(max_length=300,blank=True)
rating = models.CharField(max_length=300,blank=True)
ordernum = models.CharField(max_length=300,blank=True)

下面是从模板传入的json字典与skills模型中的字段的映射- 技能就是轴心, 评级就是价值, ordernum是order

在视图中:

radinputV=[]
radinputV = request.POST.get('radinput_Aj')
radinputV1 = request.POST.get('radinput_Aj[0][value]')

我可以使用上述符号访问字典项。你知道吗

然而,如果我使用上面的符号,我将需要写21个语句,像这样(7行3列)的Dictionary对象V。。。有什么简单的方法吗?你知道吗

如何处理从模板JSON对象Django视图向mysql表插入多行的场景?你知道吗

使用get方法编辑了。你知道吗


Tags: datagetvaluemodelsresponserequestorderpost
1条回答
网友
1楼 · 发布于 2024-09-30 01:30:30

不能通过标准表单参数发送这样的数据结构。您需要在发送之前将其序列化为JSON,然后在视图中反序列化它。你知道吗

更改data参数如下:

data: {
    'radinput_Aj' : JSON.stringify(fun()),
    'csrfmiddlewaretoken': $("input[name=csrfmiddlewaretoken]").val()
},

以及视图:

if request.method == "POST":
    data = request.POST.get('radinput_Aj')
    radinputV = json.loads(data)

相关问题 更多 >

    热门问题