2017-10-20 120 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