Когда я запрашиваю свою базу данных, я получаю одну и ту же запись три раза с тремя разными значениями. В списке результатов я хотел бы получить только одну запись, показывающую сумму этих подсчетов.
То, что я хотел бы отобразить, это общая сумма за определенный период.
В моем запросе я ввожу даты (от - до), метрический тип, тип данных и год публикации.
Например, я на веб-сайте, когда я ввожу
from 201903 until 201905
Я получаю три заголовка, к которым обращались в этот период, а также сколько раз к ним обращались.
Title, Publisher, DOI, data_type,YOP,[some other stuff] Counts
Title A publisherA 1234 Article, 2006, [some_other_stuff], 3
Title A publisherA 1234 Article, 2006, [some_other_stuff], 5
Title A publisherA 1234 Article, 2006, [some_other_stuff], 3
Мне нужно что-то вроде
Title, publisher, DOI, data_type, YOP, [some_other_stuff], Total period
Title A, publisherA 1234 Article, 2006, [some_other_stuff], 11
В views.py у меня есть следующий код:
q_report = Q()
var0 = self.request.GET.get("period1", "")
var1 = self.request.GET.get("period2", "")
var2 = self.request.GET.get("metric_type", "")
var3 = self.request.GET.get("data_type", "")
var4 = self.request.GET.get("YOP", "")
if var0:
q_report = q_report & (Q(month__gte=var0) & Q(month__lte=var1) )
#q_report_count = q_report_count & (Count(month__gte=var0) & Count(month__lte=var1) )
if var2:
q_report = q_report & (Q(metric_type=var2))
#q_report_count = q_report_count & (Q(metric_type=var2))
if var3:
q_report = q_report & (Q(data_type=var3))
if var4:
q_report = q_report & (Q(YOP=var4))
Если я использую
qs = self.model.objects.filter(q_report).select_related()
Я верну три записи
Результат
<QuerySet [<Model: Title A>, <Model: Title A>, <Model: Title A>]>
Я могу легко рассчитать сумму, используя
total = self.model.objects.aggregate(total=Sum('counts', filter=q_report))
Результат
{total : 11.0}
Но в идеале мне нужно получить и другие значения
Прямо сейчас я не могу понять, как я могу собрать их вместе, то есть что-то вроде
<QuerySet [<Model: {'title':Title A, 'total':11}>, Model: {'title':Title B, 'total':7}>]
Я даже не знаю, возможно ли это или желательно. Но мне нужно вернуть набор запросов и сумму.
Кто-нибудь может помочь? Спасибо.