Как объединить более одного набора запросов в django

Я хотел бы объединить несколько наборов запросов и сохранить общий столбец под названием "line_nm". Я создал несколько queryset с формулой, для: день, неделя и год

models.py

class PbaSetOperator(models.Model):
    work_ymd = models.DateField(blank=True, null=True)
    line_nm = models.CharField(max_length=20, blank=True, null=True)
    prodc_qty = models.IntegerField(blank=True, null=True)
    work_mh = models.FloatField(blank=True, null=True)
    in_house = models.FloatField(blank=True, null=True)
    reduction = models.FloatField(blank=True, null=True)

views.py

set_operator_today = set_operator.filter(work_ymd = date).values('line_nm').order_by('line_nm').annotate(
        set_operator_today_value=(480 * (Sum('in_house') / Sum('work_mh'))

set_operator_week = set_operator.filter(work_ymd__range = (getWeekStart(), getWeekEnd())).values('line_nm').order_by('line_nm').annotate(
            set_operator_week_value=(480 * (Sum('in_house') / Sum('work_mh'))

set_operator_year = set_operator.filter(work_ymd__range = (getYearStart(), geYearEnd())).values('line_nm').order_by('line_nm').annotate(
            set_operator_year_value=(480 * (Sum('in_house') / Sum('work_mh'))

Ожидаемый результат - набор запросов, как показано ниже:

'line_nm':01, 'set_operator_today_value':100, 'set_operator_week_value':110, 'set_operator_year':115

Как я могу это сделать?

Я пробовал использовать метод цепочки в itertools и преобразовывать в список, но безуспешно.

Существует общий столбец под названием "line_nm", и я хочу использовать его как левое соединение.

Наборы запросов могут быть объединены с помощью оператора |:

qury= set_operator_today| set_operator_week | set_operator_year # merge querysets

примечание: важно отметить, что оператор merge/combine | работает только на кверисетах из той же модели и до ее нарезки.

Вернуться на верх