Мне не удалось получить доступ к методу deposit()
в классе Account
из представлений.Дает мне ошибку: deposit() missing 1 required positional argument: 'amount'
Я вызываю метод с:
Account.deposit(amount)
Просмотры:
def home(request):
return render(request, 'automatedbankteller/home.html')
def about(request):
return render(request, 'automatedbankteller/about.html')
@login_required
def transactions(request):
context = {
'transactions': Transaction.objects.filter(sender=request.user)
}
return render(request, 'automatedbankteller/transactions.html', context)
@login_required
def my_accounts(request):
context = {
'accounts': Account.objects.filter(account_owner=request.user)
}
return render(request, 'automatedbankteller/my_accounts.html', context)
@login_required
def deposit(request):
if request.method == 'POST':
form = UserDepositForm(request.POST)
if form.is_valid():
amount = request.POST['amount']
print(amount)
Account.deposit(amount)
#form.save()
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})
Модели:
class Account(models.Model):
ACCOUNT_TYPES = (
('SA', 'Savings'),
('CA', 'Checking'),
)
accountID = models.IntegerField()
account_amount = models.DecimalField(max_digits=20, decimal_places=2)
account_type = models.CharField(max_length=2, choices=ACCOUNT_TYPES)
account_owner = models.ForeignKey(User, on_delete=models.CASCADE)
def __str__(self):
return str(self.accountID)
def get_balance(self):
return self.account_amount
def deposit(self, amount):
self.account_amount = self.account_amount + amount
return
def withdraw(self, amount):
self.account_amount = self.account_amount - amount
return
URL:
urlpatterns = [
path('', views.home, name='ABT-home'),
path('about/', views.about, name='ABT-about'),
path('my_accounts/', views.my_accounts, name='ABT-my_accounts'),
path('account_history/', views.transactions, name='ABT-transactions'),
path('deposit/', views.deposit, name='ABT-deposit'),
]
Формы:
class UserDepositForm(forms.ModelForm):
amount = forms.DecimalField(max_digits=20, decimal_places=2)
class Meta:
model = Account
fields = ['account_type', 'amount']