Как объединить два набора запросов из разных моделей для создания нового набора запросов с дополнительными полями?

В настоящее время настройка Django/MySQL

Мне нужно объединить два запроса из разных моделей в один, но в отличие от CHAIN или UNION(), мне нужно, чтобы набор записей конечного запроса расширялся и включал данные, полученные из обоих запросов на основе общего ключа (sales_date), а также поля SUM. Пожалуйста, смотрите ниже для лучшего объяснения моего вопроса:

querysetA:

id sales_date store_sales
1 2020-01-15 2000.00
2 2020-01-16 1000.00
3 2020-01-17 3000.00

querysetB:

id sales_date online_sales
1 2020-01-15 1500.00
2 2020-01-16 800.00
3 2020-01-17 2800.00

Объединил кверисетC из кверисетовA и B (мой целевой результат кверисетC):

id sales_date store_sales online_sales combine_sales
1 2020-01-15 2000.00 1500.00 3500.00
2 2020-01-16 1000.00 800.00 1800.00
3 2020-01-17 3000.00 2800.00 5800.00

Мой код для обоих наборов запросов выглядит следующим образом (оба работают и дают мне правильные результаты):

    querysetA = store_shop.objects.filter(
        sales_date__range=(fromdate, todate)) \
        .values('sales_date') \
        .annotate(store_sales=Sum('sales_income')) \
        .order_by('sales_date')

    querysetB = online_shop.objects.filter(
        sales_date__range=(fromdate, todate)) \
        .values('sales_date') \
        .annotate(online_sales=Sum('sales_income')) \
        .order_by('sales_date')

И union(), и itertools.chain не дают мне того, что я хочу. Любая помощь или предложения будут высоко оценены.

Возможно, это невозможно сохранить как queryset. Но вы могли бы использовать list-comprehension для создания списка словарей, содержащих правильные данные (и, возможно, ссылки на исходные объекты.

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