Оператор If на 2 экземплярах объекта не работает для меня

Пытаюсь создать запрос пользователя из существующего объекта модели, но ничего не получается. Даже ajax на html странице продолжает перезагружаться.

Вот моя модель

class Users_Balanc(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    Amount = models.FloatField(max_length=4, default=0.0)
    Profit = models.FloatField(max_length=30, default=0.0)
    Bonus = models.FloatField(max_length=30, default=10.0)
    Referral_Bonus = models.FloatField(max_length=30, default=0.00)
    Deposit = models.FloatField(max_length=30, default=0.00)
    Withdrawals = models.FloatField(max_length=30, default=0.00)
            
    def __str__(self):
        return f'{self.user.username} Users_Balanc'

И мое мнение

@login_required(login_url='/login')
def withdrawals(request):
    total = Users_Balanc.objects.all()
        #return render(request, 'dashboard/withdrawals.html', {'total': total})
    if request.method == 'POST':
        Amount = request.POST['Amount']
        username = request.GET.get['username']
        total = Users_Balanc.objects.all()
            
        if (total.Amount <= Amount):
            New_Request = Request.objects.create(value=Amount, user=username)
            New_Request.save
            messages.info(request, 'Successful')
            return HttpResponse('Request sent sucessful')
            
        else:
            return HttpResponse('Insufficient funds')
    else:
        return render(request, 'dashboard/withdrawals.html', {'total': total})

Html форма

<form id="post-form">
                                    {% csrf_token %}                              
                                    
                                    <div class="form-group">
                                    
                                        <h5 class="text-light">Amount</h5>
                                        <input class="form-control text-light bg-dark" placeholder="TRX Amount" type="number" name="Amount" required>
                                        <input type="hidden" name="username" id="username" value="{{username}}"/>
                                    </div>

                                            <div class="form-group">
                                            <h5 class="text-light">Enter withdrawal password</h5>
                                            <!--<input class="form-control text-light bg-dark" placeholder="Password" type="text" name="otpcode">-->
                                            <small class="text-light">If you forgot your password, you can contact admin</small>
                                        </div> 
                                                                                                                    <div class="form-group">
                                        <input class="btn btn-danger" type='submit' value="Complete Request"/>
                                    </div>

После нажатия на кнопку submit ничего не возвращается

Для уточнения, я использую метод ajax post request на html странице, чтобы вернуть ответ

Здесь есть несколько вещей, которые могут пойти не так:

Во-первых - вы ищете и GET и POST. попробуйте:

    Amount = request.POST['Amount']
    username = request.POST['username']

Секунда,

total = Users_Balanc.objects.all()

Это может вернуть несколько объектов, поэтому total.Amount ничего не значит - он не добавит их за вас. Если у пользователя только один счет, можно попробовать

total = Users_Balanc.objects.get(user__username = username) 

тогда будет работать total.Amount.

Если пользователь может иметь несколько учетных записей (на что указывает внешний ключ 'user'), вы можете попробовать что-то вроде

user_accounts= Users_Balanc.objects.filter(user__username = username).aggregate(total_amount = Sum('total'))

Это позволит 1) отфильтровать все объекты Users_Balanc, принадлежащие одному пользователю, затем 2) сложить все поля 'total' этих объектов для получения user_accounts.total_amount, чтобы вы могли:

 if (user_accounts.total_amount <= Amount):

И это будет работать, если у пользователя один или много счетов - хотя это не проверяет, достаточно ли денег на одном счете, если у пользователя много счетов.

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