filefield中的upload_to屬性可以設定上傳檔案的儲存目錄和名稱,它可以是個字串,也可以是個callable,比如乙個方法。
當upload_to的值設為乙個方法時,就可以對上傳檔案的名稱進行修改了。方法需要兩個引數,instance與filename,instance為此filefield所屬的model例項,filename為上傳檔案的名稱。
舉例:def user_directory_path(instance, filename):
# file will be uploaded to media_root/user_/
return 'user_/'.format(instance.user.id, filename)
class mymodel(models.model):
upload = models.filefield(upload_to=user_directory_path)
當乙個類定義了__call__方法時,也可以像func一樣被呼叫,所以,upload_to的值也可以是乙個定義了__cwww.cppcns.comall__方法的類。
比如,要根據上傳時間為檔名加時間戳:
import hashlib
import os
importwww.cppcns.com time
from django.utils.deconstruct import deconstructible
@deconstructible
class timestampfilename(object):
def __init__(self, path):
self.path = os.path.join(path, "%s%s")
def __call__(self, instance, filename):
extension = os.path.splitext(filename)[1]
程式設計客棧 data = "%s_%d"%(filename,int(time.time()))
file_hash = hashlib.sha1(data).hexdigest()
return self.path % (file_hash, extension)
model中的filefield可以如下定義:
class mymodel(models.model):
upload = models.filefield(upload_to=timestampfilename('media/'), )
本文標題: 定製filefield中的上傳檔名稱例項
本文位址: /jiaoben/python/200842.html
django 裡FileFIELD的編碼問題
當獲取filefield資料時會出現編碼問題 在資料庫裡顯示的是d python專案 wxmkczpy uploadfile qq截圖20190210180915.png 而取出後變成d 3a python e9 a1 b9 e7 9b ae wxmkczpy uploadfile qq e6 88...
python定製 python中定製類
1 python中 str 和repr 如果要把乙個類的例項變成 str,就需要實現特殊方法 str classperson object def init self,name,gender self.name name self.gender genderdef str self return p...
python中的定製類
str 在python中方法名如果是 x 的,那麼就有特殊的功能,因此叫做 魔法 方法 當使用print輸出物件的時候,只要自己定義了 str self 方法,那麼就會列印從在這個方法中return的資料 class student object def init self,name self.na...