首先,祝中國新年快樂。Django根據相關對象對查詢集進行排序
我這個問題,我正在尋找排序查詢集的好方法:
的三個實體:Service, Order, Rating
。
A Service
對象可以有多個Order
對象,一個Order
對象只能有一個Rating
對象。 現在,我想根據它的平均Rating
排名a Service
。
最直接的答案是: 第一次查詢的Service
所有Orders
並計算其平均Rating
,然後根據平均評分排序Service
。
但是,我很擔心效率和響應。
所以,我想在Service
對象中應該有一個屬性:Average_Rating
。每次創建評論時,Average_Rating
都會更新。
此方法是提高響應速度的好方法嗎?如果是這樣,那麼實施它的最好方法是什麼?謝謝。
這是更好地看到比解釋的代碼,請張貼代碼爲您楷模。 –
雖然沒有代碼可以查看,但基本上我明白你在說什麼。事實上,我認爲「直截了當」的解決方案並不是那麼糟糕。重點是每次想要對服務進行排名時都會發生額外的計算。對於第二種解決方案,即添加新屬性,每次創建評論時都會進行額外的計算。此外,平均評級計算並不昂貴,因爲您可以在一分貝命中和o(n)時間內完成評分。 –