我有一个返回结果的查询 -
[{'trgjob_id': 22659, 'trgmst_id': 'Tidal - Default Email Abnormal', 'jobmst_id': 10081, 'trgjob_order': 1, 'trgjob_type': 0, 'trgjob_level': 0},
{'trgjob_id': 29054, 'trgmst_id': 'CADIS - DMS Email Abnormal ', 'jobmst_id': 10081, 'trgjob_order': 2, 'trgjob_type': 0, 'trgjob_level': 0},
{'trgjob_id': 29055, 'trgmst_id': 'CADIS - DMS Email Error ', 'jobmst_id': 10081, 'trgjob_order': 3, 'trgjob_type': 0, 'trgjob_level': 0}]
我希望它做的是在每个结果的开头添加模型名称 - trgjob
(这里有3个结果)。我该怎么做呢?
把它放在所有结果的开头很容易我就这么做 -
{'trgjob': trgjobstring.data}
在上面的例子中编辑我希望它看起来像这样 -
['trgjob':
{'trgjob_id': 22659, 'trgmst_id': 'Tidal - Default Email Abnormal', 'jobmst_id': 10081, 'trgjob_order': 1, 'trgjob_type': 0, 'trgjob_level': 0},
'trgjob':
{'trgjob_id': 29054, 'trgmst_id': 'CADIS - DMS Email Abnormal ', 'jobmst_id': 10081, 'trgjob_order': 2, 'trgjob_type': 0, 'trgjob_level': 0},
'trgjob':
{'trgjob_id': 29055, 'trgmst_id': 'CADIS - DMS Email Error ', 'jobmst_id': 10081, 'trgjob_order': 3, 'trgjob_type': 0, 'trgjob_level': 0}]
如果语法不正确,我道歉。我实际上并不知道如何看待它,但我知道我希望每行开头的数据。
编辑 -
我有一个自定义序列化程序将这些数据转储到XML中,现在它以我不想要的方式格式化它(无论它是否正确)。
<list-item>
<list-item>
<trgjob_id>245970</trgjob_id>
<trgmst_id>nope</trgmst_id>
<jobmst_id>34614</jobmst_id>
<trgjob_order>1</trgjob_order>
<trgjob_type>0</trgjob_type>
<trgjob_level>0</trgjob_level>
</list-item>
<list-item>
<trgjob_id>245969</trgjob_id>
<trgmst_id>blah</trgmst_id>
<jobmst_id>34614</jobmst_id>
<trgjob_order>2</trgjob_order>
<trgjob_type>0</trgjob_type>
<trgjob_level>0</trgjob_level>
</list-item>
</list-item>
所以1.我需要list-item作为'trgjob',就像我原来的问题一样。
我希望XML看起来像这样 -
<trgjob>
<trgjob_id>245970</trgjob_id>
<trgmst_id>nope</trgmst_id>
<jobmst_id>34614</jobmst_id>
<trgjob_order>1</trgjob_order>
<trgjob_type>0</trgjob_type>
<trgjob_level>0</trgjob_level>
</trgjob>
<trgjob>
<trgjob_id>245969</trgjob_id>
<trgmst_id>blah</trgmst_id>
<jobmst_id>34614</jobmst_id>
<trgjob_order>2</trgjob_order>
<trgjob_type>0</trgjob_type>
<trgjob_level>0</trgjob_level>
</trgjob>
我最接近的是从渲染器中删除“list-item”并更改视图但我目前只知道如何将“trgjob”放在所有结果的开头而不是每个开头之一。
答案 0 :(得分:1)
假设我已经理解了你的问题,我就是这样做的:
In [1]: qs_results = [{'trgjob_id': 22659, 'trgmst_id': 'Tidal - Default Email Abnormal', 'jobmst_id': 10081, 'trgjob_order': 1, 'trgjob_type': 0, 'trgjob_level': 0},
...: {'trgjob_id': 29054, 'trgmst_id': 'CADIS - DMS Email Abnormal ', 'jobmst_id': 10081, 'trgjob_order': 2, 'trgjob_type': 0, 'trgjob_level': 0},
...: {'trgjob_id': 29055, 'trgmst_id': 'CADIS - DMS Email Error ', 'jobmst_id': 10081, 'trgjob_order': 3, 'trgjob_type': 0, 'trgjob_level': 0}]
In [2]: client_results = [{'trgjob':item} for item in qs_results]
In [3]: client_results
Out[3]:
[{'trgjob': {'jobmst_id': 10081,
'trgjob_id': 22659,
'trgjob_level': 0,
'trgjob_order': 1,
'trgjob_type': 0,
'trgmst_id': 'Tidal - Default Email Abnormal'}},
{'trgjob': {'jobmst_id': 10081,
'trgjob_id': 29054,
'trgjob_level': 0,
'trgjob_order': 2,
'trgjob_type': 0,
'trgmst_id': 'CADIS - DMS Email Abnormal '}},
{'trgjob': {'jobmst_id': 10081,
'trgjob_id': 29055,
'trgjob_level': 0,
'trgjob_order': 3,
'trgjob_type': 0,
'trgmst_id': 'CADIS - DMS Email Error '}}]
键位于第2行,它为查询集结果qs_results
中的每个dict项添加一个键。
答案 1 :(得分:1)
保持懒惰:
for item in qs_results:
yield {'trgjob':item}