在Django的1.2.3我需要執行這樣的查詢:使用FLOOR()(或其它SQL函數)在Django查詢
SELECT FLOOR(quantity/100) FROM mytable
有沒有什麼辦法讓它在純Django的風格?
然後,更困難的步驟:
SELECT FLOOR(quantity/100), count(*)
FROM mytable
GROUP BY FLOOR(quantity/100)
是否有任何標準溶液?
在Django的1.2.3我需要執行這樣的查詢:使用FLOOR()(或其它SQL函數)在Django查詢
SELECT FLOOR(quantity/100) FROM mytable
有沒有什麼辦法讓它在純Django的風格?
然後,更困難的步驟:
SELECT FLOOR(quantity/100), count(*)
FROM mytable
GROUP BY FLOOR(quantity/100)
是否有任何標準溶液?
我結束了使用extra
子句:
MyModel.objects.extra(group='FLOOR(quantity/100)')\
.values('group')\
.annotate(count=Sum('quantity'))\
.order_by()
的Sum
的說法是相當misterious,但它的作品...
請謹慎使用依賴於數據庫供應商的功能。通過在Django中進行計算,您可以達到相同的結果,同時保持數據庫不可知。然而,你可以交易表現獨立。 – 2011-01-17 10:23:40
您需要爲此使用SQL。 Django的ORM儘管非常有用,但它已經超越了它覆蓋的情況。我甚至不會說raw()
查詢集方法在這裏會有幫助 - 我會使用execute custom SQL directly的功能。
看到這個:http://stackoverflow.com/a/34622417/908336 – 2016-06-06 10:08:04