Django:跟踪表格的平均值

时间:2015-12-02 10:46:42

标签: python django

我刚开始为我的大学开展一个小方案项目,旨在提供一个提供/搜索专业辅导的平台。为防止恶意数据库条目,主题模型附带一组“支持”的选项。科目。

此外,我想跟踪每个主题的每小时平均价格作为参考值,我想知道如何实现这一点。

关于关系,主题模型有一个指向User的ForeignKeyField。但是,我不太确定如何实现特定主题的每小时平均价格。

我的想法是写一个安全的方法来计算每小时的平均价格并覆盖全局类变量。考虑到每个商品插件都会触发数据库查询,这似乎还不够。

你们如何处理这个问题?

最佳, d。

1 个答案:

答案 0 :(得分:1)

我认为,您希望能够将多个User与每个Subject相关联,反之亦然。根据您当前的Foreign Key关系,这很难做到。就每小时的平均价格而言,Django的QuerySet有一个函数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(...)