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

Django上传CSV文件重命名:扩展名前追加指定字符串_hello

实现方案

核心通过修改Django模型层FileField的upload_to参数实现,无需改动现有表单逻辑,同时满足两个需求:

1. 修改models.py代码

upload_to参数支持传入自定义函数,我们可以在函数中完成文件名重命名逻辑,代码如下:

import os
from django.db import models
from django.core.exceptions import ValidationError

# 原有CSV格式校验方法保留
def validate_file_extension(value):
    if not value.name.endswith('.csv'):
        raise ValidationError(u'Only CSV files allowed.')

# 新增自定义上传路径&重命名处理函数
def get_upload_path(instance, filename):
    # 拆分原文件的名称和后缀
    file_name, file_ext = os.path.splitext(filename)
    # 按需求拼接新文件名:原名称+_hello+后缀
    new_file_name = f"{file_name}_hello{file_ext}"
    # 返回最终的文件存储路径
    return os.path.join('documents/user_files/', new_file_name)

class user_file(models.Model):
    # 将upload_to参数从固定字符串改为自定义函数即可
    user_file_csv = models.FileField(upload_to=get_upload_path, validators=[validate_file_extension])

2. 效果说明

  • 基础需求自动满足:例如上传test.csv,最终保存的文件名为test_hello.csv
  • 可选需求自动满足:重命名逻辑在文件写入存储前执行,不会先存储原文件名文件,直接用新文件名存入目标目录
  • 重名冲突无需额外处理:如果出现同名文件,Django默认存储后端会自动在文件名后追加数字后缀(如test_hello_1.csv),不会覆盖已有文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 18:15:09