我有非常大的數據集並且不斷增長,我需要創建多個過濾器,但它很快就會失去控制,希望有人能夠幫助我將某些查詢合併到一個調用中。以下是我的觀點的開始。減少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移走,因此不同意見不是一種選擇。剛剛更新了我的「交通」模型。 –