Django FileField,在运行时确定upload_to

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,但该函数不知道用户是谁,所以我有点迷失。

谢谢您的帮助!


慕姐4208626
浏览 1604回答 3
3回答

Smart猫小萌

你可能已经阅读了文档,所以这里有一个简单的例子让它有意义: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中调用它。
打开App,查看更多内容
随时随地看视频慕课网APP