2017-10-20 119 views
1

我很努力地使用datetime.timedelta值作为我的折线图中的y轴。datetime.timedelta在谷歌图表折线图

以下是我有:

var data = new google.visualization.DataTable(); 
data.addColumn('string', 'Day'); 
data.addColumn('timedelta', 'Time Average'); 

data.addRow(['Oct-20', {{ timedeltaObject }})]); 

我猜测的图形不会呈现因无效的类型。我需要使用时间作为我的y轴的值,特别是只有几小时和几分钟。在Oct-20上说,我花了2小时5分钟做X.它应该在图上绘制这个值。

我知道可以绘制日期时间对象,但我特别需要一个时间值而不是日期值。

+0

如果您在Jinja模板中调用python对象,您是否需要将它封装在“{{}}”中? – cowbert

+0

是的,这就像我的代码。为了清晰起见,我将编辑该问题。 – nyvokub

+0

你可以插入'console.log({{timedeltaObject}}''并查看什么jinja渲染对象为? (我不知道Jinja是在调用'__repr __()'还是'__str__'或其他什么东西,还请添加一个Jinja/Jinja2标签,因为它是一个因子 – cowbert

回答

1

我设法让它工作,而不是通过Jinja传递一个timedelta对象,在我的Python代码中,我从timedelta对象中获得小时和分钟,并将它们添加到具有适当值的列表[hours, minutes, seconds]

然后在googleVisualization中,我使用data.addColumn('timeofday', 'Time Average');并通过我的列表。

注意:此方法仅适用于24小时以下的值。

+0

为什么不在控制器中继承timedelta,override/overload Jinja用来解析timedelta对象的方法来返回你需要的东西? – cowbert

+0

因为这是一个非常特殊的情况,在大型项目中它很可能永远不会再被使用,所以我不想全局覆盖Jinja如何分析对象如timedelta。 – nyvokub

+0

然后我会继承timedelta,并添加一个像'def render_method(self):return(正确表示delta&',并调用'{{newtimedelta.render_method()}}'' – cowbert