Python django deposit()缺少1个必需的位置参数:';金额';

Python django deposit()缺少1个必需的位置参数:';金额';,python,django,Python,Django,我无法从视图中访问Account类中的deposit()方法。给出错误:deposit()缺少1个必需的位置参数:“amount” 我使用以下命令调用该方法: Account.deposit(amount) 观点: Account.deposit(amount) def home(请求): 返回呈现(请求“automatedbankteller/home.html”) def关于(请求): 返回呈现(请求“automatedbankteller/about.html”) @需要登录 def事

我无法从视图中访问
Account
类中的
deposit()
方法。给出错误:
deposit()缺少1个必需的位置参数:“amount”
我使用以下命令调用该方法:

Account.deposit(amount)
观点:

Account.deposit(amount)
def home(请求):
返回呈现(请求“automatedbankteller/home.html”)
def关于(请求):
返回呈现(请求“automatedbankteller/about.html”)
@需要登录
def事务(请求):
上下文={
“事务”:事务.objects.filter(发送方=请求.user)
}
返回呈现(请求“automatedbankteller/transactions.html”,上下文)
@需要登录
定义我的账户(请求):
上下文={
“accounts”:Account.objects.filter(Account\u owner=request.user)
}
返回呈现(请求“automatedbankteller/my_accounts.html”,上下文)
@需要登录
def押金(请求):
如果request.method==“POST”:
表单=用户存款表单(request.POST)
如果form.is_有效():
金额=请求。POST['amount']
打印(金额)
账户.存款(金额)
#form.save()
messages.success(请求,“金额已存入您的帐户!”)
返回重定向(“ABT-my_账户”)
其他:
表单=用户存款表单(实例=request.user)
返回呈现(请求'automatedbankteller/deposit.html',{'form':form})
型号:

Account.deposit(amount)
类帐户(models.Model):
账户类型=(
(‘SA’、‘Savings’),
(‘CA’、‘Checking’),
)
accountID=models.IntegerField()
账户金额=型号。小数字段(最大位数=20,小数位数=2)
帐户类型=模型.CharField(最大长度=2,选项=帐户类型)
帐户\u所有者=models.ForeignKey(用户,on\u delete=models.CASCADE)
定义(自我):
返回str(self.accountID)
def获取_平衡(自我):
返回自我帐户金额
def保证金(自身、金额):
self.account\u amount=self.account\u amount+金额
返回
def提取(自身、金额):
self.account\u amount=self.account\u amount-amount
返回
网址:

Account.deposit(amount)
urlpatterns=[
路径(“”,views.home,name='ABT-home'),
路径('about/',views.about,name='ABT-about'),
路径('my_accounts/',views.my_accounts,name='ABT-my_accounts'),
路径('account_history/',views.transactions,name='ABT-transactions'),
路径('deposit/',views.deposit,name='ABT-deposit'),
]
表格:

Account.deposit(amount)

类UserDepositForm(forms.ModelForm):
金额=表格。小数字段(最大位数=20,小数位数=2)
类元:
模型=帐户
字段=['账户类型','金额']
您的
存款()
需要两个参数—类实例和金额。因此,您需要首先创建一个
帐户
实例,然后使用该方法。此外,由于不返回更新的金额,因此可以在方法本身内部调用
save()
方法

Account.deposit(amount)
class Account(models.Model):
   ...
def deposit(self, amount):
    self.account_amount = self.account_amount + amount
    self.save()
    return

您需要首先调用实例上的
存款

Account.deposit(amount)
# views.py
@login_required
    def deposit(request):
    if request.method == 'POST':
        form = UserDepositForm(request.POST)
        if form.is_valid():
            amount = request.POST['amount']
            print(amount)
            account = form.save(commit=False)  #no commit in DB
            account.deposit(amount)  # use class instance

            messages.success(request, f'The amount has been deposited into your account!')
            return redirect('ABT-my_accounts')
    else:
        form = UserDepositForm(instance=request.user)

    return render(request, 'automatedbankteller/deposit.html', {'form': form})
您也可以通过
存款
方法返回更新后的金额,但随后您需要自己调用
保存()

账户。这里的存款(金额)账户是类。您需要像这样在此类的实例上调用deposit方法

Account.deposit(amount)
account = Account.objects.get(id=1)
account.deposit(amount)

deposit
是实例方法,因此没有实例就无法直接访问它。如果您想访问,请将其作为
静态
方法。显示的代码中的缩进肯定有问题。您需要(在视图中):删除行:
帐户。存款(金额)
;取消注释
form.save()
,更准确地说,将其替换为
acc=form.save()
。此外,添加行:
acc.deposit(amount)
acc.save()
。谢谢,我将存款方法更改为self.account\u amount=self.account\u amount+小数点(amount)后,这就行了