如何在注册中注册这个离线钱包?



这是我的观点。

from models import Balance
def profile(request):
user = Balance.objects.get(user=request.user)
return render(request,'profile.html',{"balance":user.balance})

和这里创建的模型

class Balance(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
balance = models.IntegerField(default=0)
def __str__(self):
return self.user.username

这是我的注册表,我想我在这里写错了:

@unauthenticated_user
def register(request):
form = CreateUser()
if request.method == 'POST':
form = CreateUser(request.POST)
if form.is_valid():
form.save()
username = form.cleaned_data.get('username')
instance = Balance(user=request.user, balance=0)
instance.save()
messages.success(request, "Congrats !!" + username + "now you are member of the society")
return redirect('login')
context = {'form': form}
return render(request, "register.html", context)

我能够在显示配置文件时从数据库中获取用户的余额,但不能在注册时将其保存到数据库中。错误返回:

ValueError at/register/不能分配"" Balance.user"必须是"用户"。实例

当您写这一行时,您的用户还没有登录:

instance = Balance(user=request.user, balance=0)

我假设你的形式CreateUser工作正常。当保存表单时,它会返回创建的实例,因此您可以使用它来代替request.user:

user = form.save()
instance = Balance(user=user, balance=0)
instance.save()

最新更新