You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 14:06:03