如何解决创建用户关联模型时出现的「必须为Customer实例」错误?
解决Django关联模型创建错误:Cannot assign "User:xxx": "Customer_info.customer" must be a "Customer" instance.
你遇到的问题核心是类型不匹配:Customer_info的customer字段要求传入Customer类型的实例,但你传了User实例new_user,导致报错。
修改方案
创建Customer时,把生成的实例保存到变量中,再将这个变量传给Customer_info的customer字段即可:
def reg(request): form = CreateUserForm() if "register-btn" in request.POST: form = CreateUserForm(request.POST) if form.is_valid(): new_user = form.save() login(request, new_user) # 创建Customer并保存实例 new_customer = Customer.objects.create( user=new_user, points=0.0 ) # 使用刚创建的Customer实例关联Customer_info Customer_info.objects.create( customer=new_customer, deposit=0.0 ) response = redirect('profile') return response return render(request, 'main.html')
补充说明
因为Customer和User是一对一关联,每个User对应唯一的Customer。直接保存创建Customer时返回的实例,既避免了额外的数据库查询,也确保传入的类型完全符合字段要求。
内容的提问来源于stack exchange,提问作者Fors1t
相关产品推荐
相关产品推荐

