问题描述
这是我的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/ 处的值错误
无法分配“
解决方法
当您编写此行时,您的用户尚未登录:
instance = Balance(user=request.user,balance=0)
我认为您的表单 CreateUser
可以正常工作。保存表单时,它会返回创建的实例,因此您可以使用它代替 request.user
:
user = form.save()
instance = Balance(user=user,balance=0)
instance.save()