我有非常大的数据集并且不断增长,我需要创建多个过滤器,但它很快就会失去控制,希望有人能够帮助我将某些查询合并到一个调用中。以下是我的观点的开始。减少Django数据库查询
呼叫#1 - 为环,以显示所有结果
的表traffic = Traffic.objects.all()
呼叫#2 - 组合的聚合和查询
totals = Traffic.objects.aggregate(Sum('sessions'), Sum('new_users'), Sum('reminder'), Sum('campaigns'), Sum('new_sales'), Sum('sales_renewals'))
total_sessions = totals.get('sessions__sum')
total_new_users = totals.get('new_users__sum')
total_reminder = totals.get('reminder__sum')
total_campaigns = totals.get('campaigns__sum')
total_new_sales = totals.get('new_sales__sum')
total_sales_renewals = totals.get('sales_renewals__sum')
呼叫#3,# 4,#5,#6等... - 按月份和日期过滤数据库
total_sessions_2014_m = Traffic.objects.filter(created__year='2014', created__week_day=2).aggregate(Sum('sessions'))
total_sessions_2014_m = Traffic.objects.filter(created__year='2014', created__week_day=3).aggregate(Sum('sessions'))
total_sessions_2014_m = Traffic.objects.filter(created__year='2014', created__week_day=4).aggregate(Sum('sessions'))
total_sessions_2014_m = Traffic.objects.filter(created__year='2014', created__week_day=5).aggregate(Sum('sessions'))
total_sessions_2014_m = Traffic.objects.filter(created__year='2014', created__week_day=6).aggregate(Sum('sessions'))
问题是,我需要创建几十个更多的过滤器,因为我有3年的数据每列有多个数据点,我们需要合计总和。
问题:
- 我可以结合呼叫#1至#调用2
- 我可以使用呼叫#2查询呼叫#3的款项,所以我不必都称呼数据库中的对象来过滤它,然后再做几次?
正如你所看到的,这将很快失去控制。任何帮助将非常感激。谢谢。
更新添加 流量模型
class Timestamp(models.Model):
created = models.DateField()
class Meta:
abstract = True
class Traffic(Timestamp):
sessions = models.IntegerField(blank=True, null=True)
new_users = models.IntegerField(blank=True, null=True)
reminder = models.IntegerField(blank=True, null=True)
campaigns = models.IntegerField(blank=True, null=True)
new_sales = models.IntegerField(blank=True, null=True)
sales_renewals = models.IntegerField(blank=True, null=True)
# Meta and String
class Meta:
verbose_name = 'Traffic'
verbose_name_plural = 'Traffic Data'
def __str__(self):
return "%s" % self.created
是否所有这些数据一次显示在模板上? –
你可以通过添加“交通”模型来更新你的问题吗? –
@ ParagTyagi-morpheus-是的,这些都是相同的观点。它是我内部营销部门的工具,将从我们的内部服务器提供。这只是冰山一角,我有大量的数据从Excel移走,因此不同意见不是一种选择。刚刚更新了我的“交通”模型。 –