Django FileField,在運行時確定upload_to我正在嘗試設置我的上傳,以便如果用戶joe上傳文件,則轉到MEDIA_ROOT / joe,而不是讓每個人的文件都轉到MEDIA_ROOT。問題是我不知道如何在模型中定義它。以下是目前的情況:class Content(models.Model):
name = models.CharField(max_length=200)
user = models.ForeignKey(User)
file = models.FileField(upload_to='.')所以我想要的不是'。' 作為upload_to,讓它成為用戶的名字。據我所知,從Django 1.0開始,您可以定義自己的函數來處理upload_to,但該函數不知道用戶是誰,所以我有點迷失。謝謝您的幫助!
3 回答

Smart貓小萌
TA貢獻1911條經驗 獲得超7個贊
你可能已經閱讀了文檔,所以這里有一個簡單的例子讓它有意義:
def content_file_name(instance, filename): return '/'.join(['content', instance.user.username, filename])class Content(models.Model): name = models.CharField(max_length=200) user = models.ForeignKey(User) file = models.FileField(upload_to=content_file_name)
正如您所看到的,您甚至不需要使用給定的文件名 - 如果您愿意,您也可以在upload_to中調用它。
添加回答
舉報
0/150
提交
取消