求助 列表筛选问题 重复数据 组合 并封装成列表 返回前端的操作

2017-11-28 16:42:43 +08:00
 whajcf

新手刚刚学习,两张表,多对多数据, 一张老师表(字段: id,name),一张班级表(字段:id,caption), 老师表中通过 cls = models.ManyToManyField('Classes') 关联班级表,同一个老师下面的不同的班级作为一个数组字典(字段:cls_list)封装; 代码贴在下面,感觉明显累赘了,求优雅的写法...

teacher_list = models.Teacher.objects.values('id', 'name', 'cls__id', 'cls__caption')
data = []
for t in teacher_list:
	if len(data) == 0:
		t = teacher_list.first()
		data.append({
			'nid': t['id'],
			'name': t['name'],
			'cls_list': [
				{'id': t['cls__id'], 'caption': t['cls__caption']}
			]
		})
	else:
		for i, v in enumerate(data):
			if t['id'] == v['nid']:
				data[i]['cls_list'].append({'id': t['cls__id'], 'caption': t['cls__caption']})
			elif i == len(data)-1:
				data.append({
					'nid': t['id'],
					'name': t['name'],
					'cls_list': [
						{'id': t['cls__id'], 'caption': t['cls__caption']}
					]
				})
response = json.dumps({'data': data})
return HttpResponse(response)
1637 次点击
所在节点    Python
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/410239

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX