文章内容
2018/10/22 18:10:10,作 者: 黄兵
python Dictionary 附加相关问题
最近需要父子查询,使用的是python 中的字典(Dictonary),形如:{'id':1,'name':x,'item':{'id',1,'name':x,'id':2,'name':y,...}},需要附加字符串,使用update无法实现,需要研究其他方法。
以下是未成品源代码:
@manage.route('/ajax_get_material', methods=['GET', 'POST'])
@login_required
def ajax_get_material():
# get material classification id
global get_id
get_id = request.values.get('get_id', 0)
# if data is None,get default data is first data.
if get_id is None:
get_id = MaterialClassification.query.order_by(MaterialClassification.classification_since).first().id
get_catalog = ClassificationCatalog.query.filter_by(classification_id=get_id).first()
global item_str
get_material_item = MaterialItem.query.filter_by(i_catalog_id=get_catalog.id)
# {'id':1,'name':x,'item':{'id',1,'name':x,'id':2,'name':y,...}}
dict_item = {'id': get_catalog.id, 'name': get_catalog.catalog_name,'items': {'id': get_material_item.i_id, 'item_name': get_material_item.i_name}}
# TODO:Assemble json data.
for item in get_material_item:
item_str = {'id': item.i_id, 'item_name': item.i_name}
dict_item = {'id': get_catalog.id, 'name': get_catalog.catalog_name,
'items': {item_str}}
return jsonify()研究一下能否实现,同时需要注意键不能相同的问题。
2018年10月23日更新:
研究了一上午终于把问题给解决了,最后代码如下:
@manage.route('/ajax_get_material', methods=['GET', 'POST'])
@login_required
def ajax_get_material():
# get material classification id
global get_id
get_id = request.values.get('get_id', 0)
# if data is None,get default data is first data.
if get_id is None:
get_id = MaterialClassification.query.order_by(MaterialClassification.classification_since).first().id
get_catalog = ClassificationCatalog.query.filter_by(classification_id=get_id).first()
get_material_item = MaterialItem.query.filter_by(i_catalog_id=get_catalog.id)
# {'id':1,'name':x,'item':{'id',1,'name':x,'id':2,'name':y,...}}
dict_item = {'id': get_catalog.id, 'name': get_catalog.catalog_name}
# TODO:Assemble json data.
for item in get_material_item:
dict_item.setdefault('item', []).append({'id': item.i_id, 'item_name': item.i_name})
print(dict_item)
return jsonify(dict_item)输入结果:
{'id': 5, 'name': '黑色及有色金属', 'item': [{'id': 2, 'item_name': '钢丝'}, {'id': 3, 'item_name': '钢丝绳'}, {'id': 4, 'item_name': '圆钢'}, {'id': 5, 'item_name': '方钢'}, {'id': 6, 'item_name': '钢筋'}]}输入json之后的结果:

正好满足上面的要求,自此问题解决。
有什么问题欢迎下面留言。
参考资料:字典中的键映射多个值
黄兵个人博客原创。
转载请注明出处:黄兵个人博客 - python Dictionary 附加相关问题
评论列表