Django: user.save() 不保存更新到扩展自

Django: user.save() not saving updates to extended from

我正在制作一个银行交易系统,我希望用户提取金额并将其存入他们的帐户。我以扩展形式制作了余额字段,因为默认的 UserCreationForm 没有余额字段。请看下面的代码:

views.py

@login_required(redirect_field_name='login-page')
def dashboard(request):
    if request.method == 'POST':
        withdrawAmount = request.POST.get('withdraw')
        depositAmount = request.POST.get('deposit')
        print(withdrawAmount, depositAmount)
        user = User.objects.get(username=request.user.username)
        print(user)
        if withdrawAmount == None and depositAmount == None:
            return redirect('dashboard')
            messages.info(request, "Amount empty!")
        elif depositAmount == None:
            user.account.balance = user.account.balance - int(withdrawAmount)
            user.save()
        elif withdrawAmount == None:
            pass
    customer = User.objects.all()
    return render(request, 'bankapp/dashboard.html', {'customer': customer})

models.py

from django.db import models
from django.contrib.auth.forms import User

class Account(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)

    balance = models.IntegerField()

    def __str__(self):
        return self.user.username

forms.py

from django import forms
from django.contrib import messages
from django.contrib.auth.forms import UserCreationForm, User
from .models import Account

class SignUpForm(UserCreationForm):
    email = forms.EmailField(max_length=128, help_text='Input valid email')

    class Meta:
        model = User
        fields = ('username', 'email', 'password1', 'password2')

class AccountForm(forms.ModelForm):
    class Meta:
        model = Account
        fields = ('balance',)

代码运行完美,没有错误,但数据库中的余额没有更新。任何帮助将不胜感激!

您必须保存正确的对象。

您正在保存 user 对象,但您必须保存 account 对象,因此您需要:

user.account.balance = user.account.balance - int(withdrawAmount)
user.account.save()

这应该有效。