查询请求最有效的计算方法

时间:2018-11-05 18:04:06

标签: python django django-models django-queryset

我目前正在使用Django应用程序,该应用程序根据小时数输入来计算价格。 我有两种型号:

第一个模型计算所有价格:

class Vacation(models.Model):
    version = models.ForeignKey(Version)
    field_1 = XXX
    ...
    field_n = XXX

    def prices(self):
        calculation = ....
        return [price_1, ... , price_n]
    def margin(self):
        calculation = ....
        return [margin_1, ... , margin_n]

第二个值汇总了Vacation(model)中对象的所有价格

class Version(models.Model):
    field1 = XXX
    ...
    field_n= XXX

    def totals(self):
        prix_tot = sum(vacation.prices()[0] for vacation in Vacation.objects.filter(version_contrat=self))
        marge_tot = sum(vacation.margin()[0] for vacation in Vacation.objects.filter(version_contrat=self))

    return [prix_tot, marge_tot]

所以我找到了这种方法,但是当我刷新页面时,它花了很多时间(大约25秒,而没有查询请求则需要5秒)

还有其他方法吗?

我看过Django聚合,可能是错误的,但我并不认为它对我的情况有所帮助。任何人都对如何使此过程更有效有任何想法?

非常感谢

0 个答案:

没有答案