我正在try 设置我的上传,以便如果用户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='.')

所以我想要的不是"."当上传到时,必须使用用户名.

我知道从Django 1.0开始,您可以定义自己的函数来处理Upload_to,但是该函数也不知道用户是谁,所以我有点困惑.

谢谢你的帮助!

推荐答案

你可能读过the documentation本书,所以这里有一个简单的例子来说明这一点:

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 Callable中覆盖该文件名.

Django相关问答推荐

在AWS s3中获取项目的URL

Django-HTMX:呈现到不同目标的表单验证错误

注册新用户时,对象没有属性';is_active';错误:';NoneType';对象没有属性

Django:添加第二个';详细';用于检索额外信息的视图

Django Rest Framework 认证类覆盖 request.user

过滤查询以获取两个朋友之间的聊天消息?

如何使用具有某些权限的 Django 组的转储数据和加载数据?

Django 模板中的 Handlebars.js

JSP模板继承

Django REST Framework ModelSerializer get_or_create 功能

更好的 ArrayField 管理小部件?

在 Scrapy 中访问 django 模型

Django 从 url 保存图像并与 ImageField 连接

Django 模板上的 URL 编码

如何在python中遍历httprequest post变量

单击弹出框会滚动回页面顶部 [Bootstrap 和 Django]

在 Mac OS X 上安装支持 JPEG 的 PIL

如何 suppress Django 中的弃用警告?

Django 中的 Python 日志(log)记录

Django Debug Toolbar:了解时间面板( time panel)