2015-12-02 65 views
0

我剛開始爲我的uni開發一個小項目,旨在提供一個提供/搜索專業輔導的平臺。爲了防止惡意數據庫輸入,Subject模型帶有一組「受支持」主題。此外,我想跟蹤每個主題的平均每小時價格作爲參考值,我想知道如何實現這一點。Django:跟蹤表格的平均值

關於關係,主題模型有一個指向用戶的ForeignKeyField。但是,我不太清楚如何實現特定主題的每小時平均價格。

我的想法是要寫一個安全後的方法,它可以計算每小時的平均價格並覆蓋全局類變量。不過,考慮到每個報價插入都會觸發數據庫查詢,這似乎相當不足。

你們會如何解決這個問題?

最佳, D.

+1

可能爲'SubjectTutor'中間模型包含外鍵,伴隨着價格用戶和主題...然後你可以用這些模型的數據庫查詢平均成本...至於它如何與您的項目實際工作,雖然我不知道 – Sayse

+0

可能是一個很好的問題,程序員.stackexchange – Trilarion

回答

1

我想,您希望能夠將多個User s的每個Subject,反之亦然關聯。與你目前的Foreign Key關係,這將是很難做到的。至於每小時的平均價格上升,Django的查詢集有一個功能aggregate()

from django.db.models import Avg 
class Subject(models.Model): 
    ... 
    def avg_price_per_hour(self): 
     # returns None if no SubjectUser is related to this instance 
     return self.subject_tutors.aggregate(Avg('price_per_hour')) 

class Tutor(models.Model): 
    ... 

class SubjectTutor(models.Model): 
    subject = models.ForeignKey(Subject, related_name='subject_tutors') 
    tutor = models.ForeignKey(Tutor, related_name='subject_tutors') 
    price_per_hour = model.DecimalField(...) 
+0

真棒謝謝:)這樣做的工作! –