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

setting = Subject.objects.filter.annotate(
                      A_setting=Count('id', filter=Q(type='A', id__in=workers.filter(worker=1).values('id')), distinct=True) * Value(50),
                      B_setting=Count('id', filter=Q(type='B', id__in=workers.filter(worker=1).values('id')), distinct=True) * Value(30),
                      C_setting=Count('id', filter=(~Q(type='A') & ~Q(type='B') & Q(id__in=workers.filter(worker=1).values('id')))) * Value(10)) \
            .values('setting__user_id', 'A_setting', 'B_setting', 'C_setting')

Result: <QuerySet [{'setting__user_id': 4, 'A_setting': 50.0, 'B_setting': 120, 'C_setting': 10.0}, {'setting__user_id': 34, 'A_setting': 0.0, 'B_setting': 0, 'C_setting': 0.0}, {'setting__user_id': 33, 'A_setting': 0.0, 'B_setting': 150, 'C_setting': 0.0}, {'setting__user_id': 30, 'A_setting': 0.0, 'B_setting': 150, 'C_setting': 0.0}, {'setting__user_id': 74, 'A_setting': 50.0, 'B_setting': 120, 'C_setting': 10.0}]>




uploader=Feedback.objects.values('uploader_id').distinct().values('uploader_id')

Result: <QuerySet [{'uploader_id': 25}, {'uploader_id': 20}, {'uploader_id': 74}, {'uploader_id': 34}, {'uploader_id': 93}, {'uploader_id': 88}, {'uploader_id': 73}, {'uploader_id': 89}, {'uploader_id': 30}, {'uploader_id': 33}, {'uploader_id': 85}, {'uploader_id': 4}, {'uploader_id': 46}]>

"setting" выводит только тех пользователей, которые удовлетворяют условиям. Но мне нужен список всех пользователей. "uploader" - это queryset, содержащий всех пользователей. Сначала выводится весь список пользователей, и если id пользователя включен в "настройку", то выводится значение настройки. Конечный результат, которого я хочу добиться, выглядит следующим образом.

<QuerySet [['25', '0', '0', '0'], ['20', '0', '0', '0'], ['74', '50', '120', '10'], ['34', '0', '0', '0'], ['93', '0', '0', '0'], ['88', '0', '0', '0'], ['73', '0', '0', '0'], ['89', '0', '0', '0'], ['30', '0', '150', '0'], ['33', '0', '150', '0'], ['35', '0', '0', '0'], ['4', '50', '120', '10'], ['46', '0', '0', '0']]>

Я изменил "values" на "values_list" в выражениях обоих наборов запросов и выполнил приведенный ниже код, но желаемый результат не был выведен. Как мне получить желаемые результаты?

list = {}
for f in uploader:
    list.setdefault(f[0], []).append(f)
    for p in setting.filter(setting__user_id=f[0]):
        list[f[0]].append(p)
Вернуться на верх