2016-08-04 17 views
0

我想每月註釋日期標註,並且做到了這一點:Django的近 「距離」:語法錯誤,試圖通過一個月

class Month(Func):              
    function = 'EXTRACT'         
    template = '%(function)s(MONTH from %(expressions)s)' 
    output_field = models.IntegerField() 

然後

MyModel.objects.annotate(month=Month('visited_at')) 
    .values('month') 
    .annotate(total=Sum('coins_counted')) 
    .order_by('month') 

而得到錯誤:

OperationalError: near "from": syntax error 

任何想法?

+0

您使用了哪個數據庫?我與SQLITE有類似的問題,而同樣的代碼與Postgres運行良好。 SQLITE具有非常有限的聚合函數:https://www.sqlite.org/lang_aggfunc.html – Davy

回答

0

我沒有測試這一點,但一個明顯的語法錯誤是「月」需要被寫成SQL字符串,所以嘗試更改模板行這樣的:

template = "%(function)s('MONTH' from %(expressions)s)" 

(這是如何通過內置month查找的django創建的SQL看起來像無論如何。)

+0

同樣的錯誤。 – mrsolupo