我在一个视图中发布了一行/多个字段,每个行的名称都有编号,例如01_field1
,01_field2
,02_field1
,02_field2
等。用户可以添加和删除行,因此我不知道发布了多少行。换句话说,我希望能够按行号对帖子键和值进行分组。
以下是发布内容的示例,即“项目”的价值
[('01_cost', 'value'), ('01_date_end', 'value'), ('01_date_start', 'value'), ('01_hours', 'value'), ('01_resource', 'value'), ('01_task_desc', 'value'), ('02_cost', 'value'), ('02_date_end', 'value'), ('02_date_start', 'value'), ('02_hours', 'value'), ('02_resource', 'value'), ('02_task_desc', 'value'), ('job_description', 'value'), ('job_number', 'value')]
我正在尝试循环排序的帖子项并以下面的嵌套格式插入MongoDB:
{
"row1": {
"01_field1": "value",
"01_field2": "value"
},
"row2": {
"02_field1": "value",
"02_field2": "value"
},
}
我目前正在尝试为每一行生成一个dicts列表,但这似乎并没有像上面那样插入到mongo中。这是我目前的(不工作)代码。
items = sorted(request.POST.items())
project_data = []
d = {}
etid = '01'
for key, value in items:
#get the number from each posted field name
tid = re.findall(r'\d+', key)
if etid == tid:
d.update({key:value})
else:
project_data.append(d)
etid = tid
project_id = project.insert(project_data)
答案 0 :(得分:0)
可能只需更改以下内容即可:
project_data = []
=>
project_data = {}
和
else:
project_data.append(d)
到
else:
d = {}
project_data['row' + str(tid] = d
这可以让你的结构更接近你想要的结构。