Есть 2 таблицы, нужно получить сумму чисел из второй таблицы, по выборке из первой.
class Element(models.Model):
contest = models.ForeignKey(Contest, blank=True, null=True)
title = models.CharField(max_length=255)
description = models.TextField(blank=True)
weight = models.IntegerField(_('Weight'), blank=True, default=1)
class Data(models.Model):
useractive = models.ForeignKey(UserActiv)
element = models.ForeignKey(Element, blank=True, null=True)
date_review = models.DateTimeField(_("Date Review"), auto_now_add=True)
url_page = models.CharField(max_length=255)
showing = models.IntegerField(_('Showing'), blank=True, default=0)
Вот написал запрос:
Element.objects.filter(
id__in = Data.objects.filter(
showing = 2,
useractive = user.id
).values_list('element')
).aggregate(sum_weight = Sum('weight'))
Получаю:
{'sum_weight': 3}
То есть по факту получаем 2 элемента, так как id__in получается что входит всего в 2 элемента:
[<Element: 2>, <Element: 1>]
А нужно чтобы не вхождения, то есть всего как бы 2 вхождения, а все элементы вывело
[<Element: 2>,<Element: 2>, <Element: 1>, <Element: 1>, <Element: 1>, <Element: 1>]
И поучить:
{'sum_weight': 8}