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
提交
取消