Как вычесть общий месячный доход из общих месячных расходов, чтобы получить чистый доход, используя цикл Python Django for loop и индекс списка

Я хочу отобразить общий доход за месяц, общий расход за месяц и чистый доход в шаблоне Django с помощью таблицы. Идея заключается в том, что поскольку пользователь продолжает добавлять доходы и расходы ежедневно, скрипт должен быть в состоянии добавить все доходы за каждый месяц года и сделать то же самое с расходами. И вычесть общие расходы за месяц из общего дохода за месяц, чтобы получить чистый доход за каждый месяц каждого года внутри модели. Результат расчета должен быть отображен соответствующим образом в Django Template (например, Месяц = Июль 2021 - Общий месячный доход = 48,900, Общие месячные расходы = 9,500, Чистый доход = 41,450).

Проблема здесь в том, что если в Модели расходов нет суммы расходов, то в таблице Django Template не отображается результат, даже если в Модели доходов много цифр доходов, а если в Модели расходов есть цифры расходов, то Общие месячные расходы переключаются на другие Общие месячные доходы, тем самым давая неправильный Чистый доход.

Например, если есть три месяца для разных лет, результаты "Общий месячный доход" (первый столбец) отображаются правильно, но "Общий месячный расход" (второй столбец) для первой строки таблицы меняет цифру, предназначенную для первого результата, на последнюю, цифру, предназначенную для второго расхода, на первую и третий результат на место второго расхода, тем самым создавая неправильный чистый доход для всех отображаемых результатов.

Вот моя модель для доходов (те же свойства полей, что и в модели расходов):

class Expenditure(models.Model):
      description = models.CharField(max_length=100, null=False)
      category = models.CharField(max_length=100, choices=CATEGORY_EXPENSES, null=True)
      staff = models.ForeignKey(User, on_delete=models.CASCADE, null=True)
      amount = models.PositiveIntegerField(null=False)
      Remarks = models.CharField(max_length=120, null=True)
      date = models.DateField(auto_now_add=False, auto_now=False, null=False)
      addedDate = models.DateTimeField(auto_now_add=True)

Вот метод моих взглядов для анализа ежемесячных доходов и расходов, который я пробовал:

def monthly_Income(request):
    now = datetime.datetime.now()

    total_monthly_income =Income.objects.annotate(month=TruncMonth('date')).values('month').annotate(total_monthly_income=Sum('amount'))
total_monthly_expenses = Expenditure.objects.annotate(month=TruncMonth('date')).values('month').annotate(total_monthly_expenses=Sum('amount'))
income_expense = zip(total_monthly_income, total_monthly_expenses)

net_monthly_income_list = []

for income, expense in income_expense:
    net_monthly_income_list.append(income.get('total_monthly_income', 0) - expense.get('total_monthly_expenses', 0)) or 0

income_list = zip(total_monthly_income, total_monthly_expenses, net_monthly_income_list)

context = {
    'income_list': income_list
}

return render(request, 'cashier/view_income_monthly.html', context)

Вот как я пытаюсь отобразить результат в шаблоне django:

{% for total_monthly_income, total_monthly_expenses, net_monthly_income in income_list %}
        <tr>
            <th scope="row">{{ forloop.counter }}</th>
            <td nowrap>{{ total_monthly_income.month }}</td>
            <td nowrap>{{ total_monthly_income.total_monthly_income | intcomma }}</td>
            <td >{{ total_monthly_expenses.total_monthly_expenses | intcomma }}</td>
            <td >{{ net_monthly_income | intcomma }}</td>
        
            <td nowrap>
                <a class="btn btn-info btn-sm" href="#">Edit</a>
                <a class="btn btn-danger btn-sm" href="#">Delete</a>
            </td>
        </tr>
    {% endfor %}  
Вернуться на верх