Оператор 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):
И это будет работать, если у пользователя один или много счетов - хотя это не проверяет, достаточно ли денег на одном счете, если у пользователя много счетов.