当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python Django FileField.upload_to用法及代码示例


本文介绍 django.db.models.FileField.upload_to 的用法。

声明

FileField.upload_to

该属性提供了一种设置上传目录和文件名的方式,可以通过两种方式设置。在这两种情况下,值都会传递给 Storage.save() 方法。

如果您指定一个字符串值或 Path ,它可能包含 strftime() 格式,它将被文件上传的日期/时间替换(这样上传的文件不会填满给定的目录)。例如:

class MyModel(models.Model):
    # file will be uploaded to MEDIA_ROOT/uploads
    upload = models.FileField(upload_to='uploads/')
    # or...
    # file will be saved to MEDIA_ROOT/uploads/2015/01/30
    upload = models.FileField(upload_to='uploads/%Y/%m/%d/')

如果您使用默认的 FileSystemStorage ,则字符串值将附加到您的 MEDIA_ROOT 路径中,以形成本地文件系统上存储上传文件的位置。如果您使用不同的存储,请查看该存储的文档以了解它如何处理 upload_to

upload_to 也可以是可调用的,例如函数。这将被调用以获取上传路径,包括文件名。此可调用对象必须接受两个参数并返回要传递给存储系统的Unix-style 路径(带有正斜杠)。两个参数是:

参数 说明
instance

定义了FileField 的模型实例。更具体地说,这是附加当前文件的特定实例。

在大多数情况下,这个对象还没有保存到数据库中,所以如果它使用默认的 AutoFieldit might not yet have a value for its primary key field

filename 最初赋予文件的文件名。在确定最终目的地路径时可能会或可能不会考虑这一点。

例如:

def user_directory_path(instance, filename):
    # file will be uploaded to MEDIA_ROOT/user_<id>/<filename>
    return 'user_{0}/{1}'.format(instance.user.id, filename)

class MyModel(models.Model):
    upload = models.FileField(upload_to=user_directory_path)

相关用法


注:本文由纯净天空筛选整理自djangoproject.com大神的英文原创作品 django.db.models.FileField.upload_to。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。