【问题标题】:Django-Chartit 'source' must either be a QuerySet, Model or ManagerDjango-Chartit 'source' 必须是 QuerySet、Model 或 Manager
【发布时间】:2012-05-15 08:01:19
【问题描述】:

我正在使用Django-Chartit 创建图表。
尝试关注this 示例。
我的问题是我想使用不是来自模型的数据 所以我尝试了这段代码

data = \
    DataPool(
       series=
        [{'options': {
           'source': [1,2,3,4,5,6,7,8,9,10]},
          'terms': [
            'month',
            'houston_temp',
            'boston_temp']}
         ])
chart = Chart(
        datasource = data,
        series_options =
          [{'options':{
              'type': 'line',
              'stacking': False},
            'terms':{
              'month': [
                'boston_temp',
                'houston_temp']
              }}],
        chart_options =
          {'title': {'text': 'Weather Data of Boston and Houston'},
           'xAxis': {'title': {'text': 'Month number'}
                     }})

我收到一条错误消息

'source' 必须是 QuerySet、Model 或 Manager。改为 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 类型。

我认为我不能从列表中创建 QuerySet。 任何想法 ?

【问题讨论】:

  • 嗨@yossi。感谢这个问题。这个时候,我也只是处于这种心态。你是怎么解决的?谢谢。
  • 我改用 highcharts javascript 并将数据作为字符串呈现给页面中的 javascript
  • 谢谢。我在做这个工作。我也认为这是一个优雅的解决方案。另外,对我来说,Highstock 是一个更好的解决方案。问候。

标签: javascript python django highcharts


【解决方案1】:

看起来 Django-Chartit 真的是用来用模型制作图表的。注意标语:

Create charts from your Django models effortlessly

如果有特定原因您不能使用模型,我会考虑使用单独的网络图表工具such as Flot。它是纯 JavaScript,因此您需要将数据发送到客户端才能制作图表。

【讨论】:

    【解决方案2】:

    首先来自他们的docs terms 必须是source 上有效字段的列表或字典,其中必须是模型、查询集或经理。

    那么你想使用什么样的数据呢?

    更新:这个列表数据源到底是什么?如果它是一个包含 id 的列表 您可以这样做以使其成为查询集

    MyModel.objects.filter(id__in=[3,1,2,5,77])
    

    【讨论】:

    • 我只想使用一个简单的列表
    • @yossi 看到我的更新。如果这不适合你,最好看看 Paragon 提出的建议
    • 不,如果是 id,它不是一个列表,它只是一个与模型无关的简单列表。
    猜你喜欢
    • 2015-11-04
    • 1970-01-01
    • 2021-10-09
    • 2019-02-25
    • 2014-10-06
    • 2019-03-21
    • 2012-10-28
    • 1970-01-01
    • 2019-10-11
    相关资源
    最近更新 更多