當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。