django 对象的2个示例上的If语句不起作用

wn9m85ua  于 2022-11-18  发布在  Go
关注(0)|答案(1)|浏览(181)

我试图从一个现有的模型对象创建一个用户请求,但是它不起作用。甚至html页面上的 AJAX 也在不断地重新加载。
这是我的模型

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>

单击“提交”按钮后返回空值

为了得到更多的说明,我在html页面上使用 AJAX post request方法返回响应。

zvms9eto

zvms9eto1#

这里有几件事可能会出错:
首先-你正在寻找一个GET和POST.尝试:

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

第二、

total = Users_Balanc.objects.all()

这可能会返回多个对象,所以总数。数量没有任何意义-它不会为您添加它们。如果用户只有一个帐户,您可以尝试

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

然后是总数。
如果一个用户可以有多个帐户(由foriegn键“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):

如果用户有一个或多个帐户,这将工作-虽然它不检查是否有足够的钱在一个 * 单一 * 帐户,如果用户有许多帐户。

相关问题