2017-08-09 29 views
0

我想做一個查詢是更好地把查詢在models.py或views.py中

query = Rating.objects.filter(human=pk) 

friendliness = query.aggregate(Avg('friendliness')) 
punctuality = query.aggregate(Avg('punctuality')) 
knowledge = query.aggregate(Avg('knowledge')) 

,在我的HTML顯示此。是把它在views.py最好的做法還是更把它放在models.py?

+1

模型更好的,你可以很容易重用。 –

+0

不是一個真正的回答你的問題,但你可能會發現這篇文章有用 http://scottlobdell.me/2015/01/sql-database-best-practices-django-orm/ – matiit

回答

1

我認爲這是最適合models.Manager

class RatingManager(models.Manager): 
    ... 
    def aggregate_by_friendliness(self, human): 
     return self.filter(human=human).aggregate(Avg('friendliness')) 

class Rating(models.Model): 
    ... 
    objects = RatingManager() 

所以,你可以重複使用它是這樣的:

friendliness = Rating.objects.aggregate_by_friendliness(human=pk) 
+0

謝謝。爲了使可重複使用的,我做了一個變量來代替 '友好' '類RatingManager(models.Manager): ... 高清aggregate_by_friendliness(自我,人類,類): 回報self.filter(人=人) .aggregate(平均(類別))' –

相關問題