如何存储一些与用户一对一关系的额外信息

时间:2021-08-01 13:11:38

标签: python django

我正在尝试存储一些关于刚刚登录的用户的额外信息。实际上我有一个不同的表单,一旦页面加载,登录的用户需要填写。我希望针对已登录的用户存储额外信息。我已分配一对一关系,但出现此错误。

Cannot assign "'username'": "PersonalDetail.user" must be a "User" instance

模型

class PersonalDetail(models.Model):
    user= models.OneToOneField(User, null=True, on_delete=models.CASCADE)
    age= models.IntegerField( null=True)
    phone= models.CharField(max_length=10,null=True )
    pan= models.CharField(max_length=10, null=True)
    enrollment_no= models.CharField(max_length=30, null=True)
    state= models.CharField(max_length=40 , null=True)

观看次数

  if request.method =='POST':
         user= request.POST.get("user")
         age= request.POST.get("age") 
         phone= request.POST.get("phone")
         pan= request.POST.get("pan")
         enrollment_no= request.POST.get("enrollment_no")
         state = request.POST.get("state")
         details=PersonalDetail(user=user ,age=age,  phone= phone,  pan= pan, enrollment_no=enrollment_no, state=state )
         details.save()
         return render(request, 'consult.html')

我是初学者,请更正我的代码,因为我无法根据登录的用户 ID 或用户名存储这些信息。这个表单是在他发送的页面旁边接收到登录用户的,因此必须将其存储在不同的表中。

1 个答案:

答案 0 :(得分:1)

不要从表单中获取用户信息。 在view.py

if request.method =='POST':
         age= request.POST.get("age") 
         phone= request.POST.get("phone")
         pan= request.POST.get("pan")
         enrollment_no= request.POST.get("enrollment_no")
         state = request.POST.get("state")
         user = request.user
         details=PersonalDetail(user=user ,age=age,  phone= phone,  pan= pan, enrollment_no=enrollment_no, state=state )
         details.save()
         return render(request, 'consult.html')

希望这对你有用。