2013-04-25 37 views
1

所以,我试图用我的数据创建一个数据透视表,但我一直得到'NoneType'对象不可迭代。我正在使用Chartit。我的错误与“术语”,具体为:[“tot_ft”]}])这是专门在数据透视图部分'NoneType'对象在Chartit中是不可迭代的

这里是我的代码: 这里是下面的事情我已经导入:

from django.shortcuts import render, get_list_or_404, get_object_or_404, redirect 
from django.contrib.auth.decorators import login_required 
from basketball.models import Stats, Player, League, Game, Team 
from django.contrib.auth import get_user 
from django.db.models import Sum 
from django.http import HttpResponse, HttpResponseRedirect 
from django.core.mail import send_mail, BadHeaderError 
from chartit import PivotDataPool, PivotChart 

views.py中

def player_pivot_chart_view(request): 
# Step 1: Create a PivotDataPool with the data we want to retrieve 
playerPivotData = PivotDataPool(
     series = 
     [{'options': { 
      'source': Stats.objects.all(), 
      'categories': 'player__first_name'}, 
     'terms': { 
       'tot_ft':Sum('freeThrowsMade')}}]) 
pivcht = PivotChart(
      datasource = playerPivotData, 
      series_options = [ 
       {'options': { 
        'type': 'column', 
        'stacking': True}, 
       'terms': ['tot_ft']}]) 
return render(request,'basketball/StatsPage.html', {'dataChart':pivcht}) 

models.py

class Stats(models.Model): 
    player = models.ForeignKey(Player) 
    game = models.ForeignKey(Game) 
    freeThrowsMade = models.PositiveIntegerField(verbose_name='FTm', default = 0) 
    freeThrowsAttempted = models.PositiveIntegerField(verbose_name='FTa', default = 0) 
    twoPointsMade = models.PositiveIntegerField(verbose_name='2Pm', default = 0) 
    twoPointsAttempted = models.PositiveIntegerField(verbose_name='2Pa', default = 0) 
    threePointsMade = models.PositiveIntegerField(verbose_name='3Pm', default = 0) 
    threePointsAttempted = models.PositiveIntegerField(verbose_name='3Pa', default = 0) 
    blocks = models.PositiveIntegerField(default = 0) 
    steals = models.PositiveIntegerField(default = 0) 
    assists = models.PositiveIntegerField(default = 0) 
    fouls= models.PositiveIntegerField(default = 0) 
+0

你也可以添加追溯 – dusual 2013-04-25 18:55:20

+0

你可以去这个链接http://dpaste.com/1073522/ – 2013-04-25 18:59:11

+0

我有一个问题一个单一的领域的总和应该给1个数据点,你只有一个单一的术语/轴你正在这个图表你想用一个数据点来绘制图表,你必须有更多的相对位置来创建一个图表 – dusual 2013-04-25 19:11:44

回答

3

我得到了相同的E RROR。在对chartit源代码进行一些搜索之后,我找到了解决方案。

data_sourceseries_optionschart_options之外,还有一个可选参数可以给PivotChart构造函数。当没有给出chart_options时,默认情况下,chartit将它分配给None,导致您得到的错误。 这实际上是一个chartit中的错误。

要绕过这一点,你应该送一个空的字典作为chart_options

pivcht = PivotChart(
      datasource = playerPivotData, 
      series_options = [ 
       {'options': { 
        'type': 'column', 
        'stacking': True}, 
       'terms': ['tot_ft']}], 
      chart_options = {}) 
1

我有同样的问题,我知道的东西的方式是脚麻是通过将数据发送到一个模板。我把图表中的数据放在我的“base.html文件中,每当我打开一个不是那个接收数据的模板时,我得到了这个错误,请确保你没有这样做,

相关问题