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

Django:保存至新模型前检查文件是否存在,解决FileNotFoundError

Django中FileField实际文件存在性检查方案

直接判断product.img_1仅能确认数据库中存有文件路径,无法验证服务器上是否有对应实体文件,这就是你遇到FileNotFoundError的原因。以下是几种可靠的检查方法:

方法1:利用存储系统的exists()方法

Django默认的文件存储系统提供了exists()方法,可直接验证文件是否存在,兼容本地和云存储场景:

from django.core.files.storage import default_storage

if product.img_1 and default_storage.exists(product.img_1.name):
    obj_apartment.basic_img = product.img_1

方法2:捕获异常验证文件可访问性

如果想模拟open()的逻辑,可尝试打开文件并捕获异常,避免报错:

if product.img_1:
    try:
        product.img_1.open()
        product.img_1.close()  # 打开后务必关闭文件
        obj_apartment.basic_img = product.img_1
    except FileNotFoundError:
        pass  # 文件不存在时跳过赋值

方法3:本地存储下直接检查文件路径

若仅使用本地文件系统存储,也可通过Python标准库直接检查绝对路径:

import os

if product.img_1 and os.path.exists(product.img_1.path):
    obj_apartment.basic_img = product.img_1

注:该方法仅适用于本地存储,云存储场景请用方法1。

内容的提问来源于stack exchange,提问作者Maddie Graham

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 03:20:36