Django: как вычесть число из другого числа и вернуть новое_значение в django

У меня есть поле модели под названием main_all_earning и оно выглядит следующим образом main_all_earning = models.IntegerField(default=0), у меня также есть форма, в которую пользователь может ввести любую сумму, которую он хочет снять с main_all_earning, я написал логику для него, чтобы вычесть значение из формы, которая называется amount из main_all_earning, но main_all_earning не обновляется. В чем может быть проблема?

Views.py


def withdrawal_request(request):
    user = request.user
    profile = Profile.objects.get(user=user)
    main_all_earning = profile.main_all_earning
    
    if request.method == "POST":
        form = WithWithdrawalRequestForm(request.POST)
        
        if form.is_valid():
            new_form = form.save(commit=False)
            new_form.user = request.user

            if new_form.amount > main_all_earning:
                messages.warning(request, "You cannot withdraw more than your wallet balance.")
                return redirect("core:withdrawal-request")

            elif pending_payout >= main_all_earning:
                messages.warning(request, "You have reached your wallet limit")
                return redirect("core:withdrawal-request")
            
            elif new_form.amount >= main_all_earning:
                messages.warning(request, "You have reached your wallet limit")
                return redirect("core:withdrawal-request")

            else:
                new_form.save()
                main_all_earning = main_all_earning - new_form.amount
                messages.success(request, f"Withdrawal Request Is Been Processed... You would get a bank alert soon")
                return redirect("core:withdrawal-request")

    else:
        form = WithWithdrawalRequestForm(request.POST)
        context = {
            "form":form,
            "main_all_earning":main_all_earning,
            
        }
        return render(request, "core/withdrawal-request.html", context)

    context = {
            "form":form,
            "main_all_earning":main_all_earning,
            
        }
    return render(request, "core/withdrawal-request.html", context)

Вы устанавливаете переменную main_all_earning здесь:

main_all_earning = main_all_earning - new_form.amount

Но на самом деле вы не устанавливаете его в профиль и не сохраняете его:

profile.main_all_earning = main_all_earning - new_form.amount
profile.save()

Вам нужно сохранить его в профиле следующим образом

## chain the main_all_earning to the profile object
profile.main_all_earning = main_all_earning - new_form.amount
## Save the new value
profile.save()
Вернуться на верх