Уменьшить временную сложность функции разбора кверисетов Django

Эта функция принимает таблицу Django QuerySet, поля (имена столбцов таблицы в виде списка) и имя (строка). Она проверяет, есть ли имя в полях столбцов. Если имя есть в полях, она добавляет сумму поля в список сумм и возвращает этот список в виде словаря после перечисления. Я заметил, что она выполняется за o(n^2) (я думаю) и хотел бы уменьшить ее временную сложность.

#returns an enumerated dict of sums of the fields in the table
#table is a Django QuerySet, fields is a list of fields, name is a string

def fieldSum_to_list(table, fields, name) -> dict:
    sum = []
    name = name.lower()
    for field in fields:
        if name in field.name:
            if (None in table.aggregate(Sum(field.name)).values()):
                # value = 0
                # sum.append(value) -> what I was doing before pass
                pass 
            else:
                col_sum = table.aggregate(Sum(field.name)).get(
                    str(field.name) + '__sum')
                sum.append(col_sum)
    diction = dict(enumerate(sum))
    if (len(diction) == 1):
        return diction[0]
    return dict(enumerate(sum))

Программа замедлилась после добавления этой строки:

if (None in table.aggregate(Sum(field.name)).values()):

это то, что замедлило работу программы, так как до этого она работала намного быстрее, я думаю, что это условие действует как цикл. По сути, я ищу способ проверить и убедиться, что значение этого столбца == None более эффективным способом

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