Django chartit 2 - 一个简单图表中的多个系列

时间:2016-05-24 10:02:02

标签: python django charts

成功使用Django Chartit 2构建图形(简单折线图和数据透视图的不同用途)后,我尝试使用来自不同模型的数据制作折线图。它失败了,我试图复制示例provided here

它也失败了,我想知道为什么,我的猜测是它可能与Chartit 2的Python 3迁移(我使用Python 3.5 / Django 1.8 / Chartit 0.2.2)作为示例,如果来自Chartit 1文档。也许它还没有适应Python 3,但我无法解决问题......这是我的代码:

  • views:完全如提供的示例
  • 追溯:
  

/ space / reports / 2

的TypeError      

unorderable类型:dict()<字典()

     

请求方法:GET

     

请求网址:http://localhost:8000/space/reports/2

     

Django版本:1.8.6

     

异常类型:TypeError

     

例外值:

     

unorderable类型:dict()<字典()

     

异常位置:C:\ Program Files(x86)\ Python 3.5 \ lib \ site-> packages \ chartit \ charts.py in _groupby_x_axis_and_vqs,第159行

  • 完全追溯:
  在get_response中的

C:\ Program Files(x86)\ Python 3.5 \ lib \ site-packages \ django \ core \ handlers \ base.py                                  response = wrapped_callback(request,* callback_args,** callback_kwargs)...

     报告3中的

C:\ Users \ Usuario1 \ space \ reports \ views.py                                      'text':'月号'}}}})...

      init 中的

C:\ Program Files(x86)\ Python 3.5 \ lib \ site-packages \ chartit \ charts.py                      self.x_axis_vqs_groups = self._groupby_x_axis_and_vqs()......

     _groupby_x_axis_and_vqs中的

C:\ Program Files(x86)\ Python 3.5 \ lib \ site-packages \ chartit \ charts.py                          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
    

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

1 个答案:

答案 0 :(得分:-1)

亚历山大托多罗夫的这篇文章可能有所帮助:

  

问题是两个列表中的第二个元素有所不同   键和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/