【发布时间】:2016-05-24 10:02:01
【问题描述】:
在成功使用 Django Chartit 2 构建图表(简单折线图和数据透视图的不同用途)后,我尝试使用来自不同模型的数据制作折线图。它失败了,我试图复制示例provided here
它也失败了,我想知道为什么,我的猜测是它可能与 Chartit 2 的 Python 3 迁移有关(我使用 Python 3.5 / Django 1.8 / Chartit 0.2.2)作为示例,如果来自 Chartit 1文档。也许它还没有适应 Python 3,但我无法解决这个问题......这是我的代码:
- 视图:与提供的示例完全相同
- 追溯:
/space/reports/2 处的类型错误
不可排序的类型:dict()
请求方法:GET
请求网址:http://localhost:8000/space/reports/2
Django 版本:1.8.6
异常类型:TypeError
异常值:
不可排序的类型:dict()
异常位置:C:\Program Files (x86)\Python 3.5\lib\site->packages\chartit\charts.py 在 _groupby_x_axis_and_vqs,第 159 行
- 完整回溯:
C:\Program Files (x86)\Python 3.5\lib\site-packages\django\core\handlers\base.py 在 get_response response = Wrapped_callback(request, *callback_args, **callback_kwargs) ...
报告3中的C:\Users\Usuario1\space\reports\views.py 'text': '月数'}}}) ...
C:\Program Files (x86)\Python 3.5\lib\site-packages\chartit\charts.py in init self.x_axis_vqs_groups = self._groupby_x_axis_and_vqs() ...
C:\Program Files (x86)\Python 3.5\lib\site-packages\chartit\charts.py 在 _groupby_x_axis_and_vqs itr1 = 排序(itr1, key=sort_fn)
-
chartit\charts.py 中对应的代码:
dss = self.datasource.series x_axis_vqs_groups = defaultdict(dict) sort_fn = lambda td_tk: td_tk[1].get('xAxis', 0) so = sorted(self.series_options.items(), key=sort_fn) x_axis_groups = groupby(so, sort_fn) for (x_axis, itr1) in x_axis_groups: sort_fn = lambda td_tk: dss[td_tk[1]['_x_axis_term']]['_data'] **itr1 = sorted(itr1, key=sort_fn)** for _vqs_num, (_data, itr2) in enumerate(groupby(itr1, sort_fn)): x_axis_vqs_groups[x_axis][_vqs_num] = _x_vqs = {} for tk, td in itr2: _x_vqs.setdefault(td['_x_axis_term'], []).append(tk) return x_axis_vqs_groups
如果您能提供帮助,非常感谢!
【问题讨论】: