Django中如何将当前登录用户关联到新建的Account模型对象?
问题根源
你为form对象动态添加的user属性不属于ModelForm定义的处理字段范围,表单执行save()方法时不会识别该属性并同步到模型实例,因此最终入库的Account对象user字段始终为空。
修复方案
修改views.py中的视图逻辑,通过save(commit=False)先拿到未写入数据库的Account实例,手动赋值user字段后再完成入库操作,修改后的代码如下:
# 引入登录校验装饰器,避免未登录用户访问时赋值异常 from django.contrib.auth.decorators import login_required @login_required def create_account(request): if request.method == 'POST': form = AccountForm(request.POST) if form.is_valid(): # 仅生成模型实例,暂不写入数据库 account_instance = form.save(commit=False) # 手动补全user字段 account_instance.user = request.user # 正式写入数据库 account_instance.save() return redirect('accounts') else: form = AccountForm() return render(request, 'account/account_create.html', {'form': form})
内容的提问来源于stack exchange,提问作者Florent
相关产品推荐
相关产品推荐

