【问题标题】:Django chartit 2 - multiple series in one simple ChartDjango chartit 2 - 一个简单图表中的多个系列
【发布时间】: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
    

如果您能提供帮助,非常感谢!

【问题讨论】:

    标签: python django charts


    【解决方案1】:

    Alexander Todorov 的这篇文章可能会有所帮助:

    问题是两个列表中的第二个元素有不同 键和 Python 不知道如何比较它们。在早期的 Python 中 版本这已被 Ned 描述为特殊情况 Batchelder(Python 覆盖工具的作者)但在 Python 3 中 字典没有自然的排序顺序。如果是 django-chartit(我现在是它的官方维护者)这个 bug 当您想要绘制来自多个源(模型)的数据时触发 同一张图表。在这种情况下,来自每个数据系列的字段 不同,触发上述错误。

    错误描述链接:http://atodorov.org/blog/2016/08/05/python-2-vs-python-3-list-sort-causes-bugs/

    【讨论】:

    • 是的,很可能就是这样。我会寻找 django-chartit 的未来更新,看看是否更正,谢谢!
    猜你喜欢
    • 2015-07-30
    • 2016-03-22
    • 2017-02-26
    • 2016-03-13
    • 2011-08-24
    • 1970-01-01
    • 1970-01-01
    • 2012-06-06
    • 1970-01-01
    相关资源
    最近更新 更多