首先,祝中国新年快乐。Django根据相关对象对查询集进行排序
我这个问题,我正在寻找排序查询集的好方法:
的三个实体:Service, Order, Rating
。
A Service
对象可以有多个Order
对象,一个Order
对象只能有一个Rating
对象。 现在,我想根据它的平均Rating
排名a Service
。
最直接的答案是: 第一次查询的Service
所有Orders
并计算其平均Rating
,然后根据平均评分排序Service
。
但是,我很担心效率和响应。
所以,我想在Service
对象中应该有一个属性:Average_Rating
。每次创建评论时,Average_Rating
都会更新。
此方法是提高响应速度的好方法吗?如果是这样,那么实施它的最好方法是什么?谢谢。
这是更好地看到比解释的代码,请张贴代码为您楷模。 –
虽然没有代码可以查看,但基本上我明白你在说什么。事实上,我认为“直截了当”的解决方案并不是那么糟糕。重点是每次想要对服务进行排名时都会发生额外的计算。对于第二种解决方案,即添加新属性,每次创建评论时都会进行额外的计算。此外,平均评级计算并不昂贵,因为您可以在一分贝命中和o(n)时间内完成评分。 –