在Django中调用form.save()后如何直接获取已保存的模型实体对象?
你可以直接用变量接收 form.save() 方法的返回值,Django 的 ModelForm 执行 save() 操作后默认会返回刚写入数据库的模型实体对象,不需要额外调用 get 方法查询。
修改后的代码示例如下:
if request.method == 'POST': form = WaveFileForm(request.POST, request.FILES) if form.is_valid(): # 接收save方法返回的模型实例 wave_file = form.save() # 通过实例的document字段的path属性获取保存的完整文件路径 print(wave_file.document.path)
如果你的业务逻辑需要先修改实例字段再提交到数据库,使用 commit=False 参数时,同样可以拿到未持久化的实例,手动调用实例的 save() 方法后依旧可以复用该对象获取文件路径:
if form.is_valid(): wave_file = form.save(commit=False) # 补充其他字段逻辑,比如关联当前登录用户 wave_file.uploader = request.user wave_file.save() # 此时依然可以直接通过wave_file对象拿到文件路径 print(wave_file.document.path)
内容的提问来源于stack exchange,提问作者whitebear
相关产品推荐
相关产品推荐

