微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何在注册时注册这个离线钱包?

这是我的view.py

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)

我可以在显示个人资料时从数据库获取用户的余额,但在注册时无法将其保存到数据库中。当错误返回时:

/register/ 处的值错误 无法分配“>”:“Balance.user”必须是“User”实例

解决方法

当您编写此行时,您的用户尚未登录:

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

我认为您的表单 CreateUser 可以正常工作。保存表单时,它会返回创建的实例,因此您可以使用它代替 request.user:

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。