当前位置: 首页 > 面试题库 >

在运行时确定带有upload_to的Django FileField

年风华
2023-03-14
问题内容

我正在尝试设置我的上传文件,这样,如果用户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,但是该函数不知道谁将成为谁,所以我有点迷路了。

谢谢你的帮助!


问题答案:

你可能已经阅读了文档,所以这里有一个简单的示例可以使之有意义:

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



 类似资料:
  • 问题内容: 创建活动后,我试图将动画应用于Android应用程序中的视图。为此,我需要确定视图的当前大小,然后设置动画以从当前大小缩放到新大小。这部分必须在运行时完成,因为视图会根据用户的输入缩放为不同的大小。我的布局以XML定义。 这似乎是一项容易的任务,显然有很多关于此的SO问题,尽管没有一个解决了我的问题。所以也许我缺少明显的东西。我可以通过以下方式理解我的观点: 这工作得很好,但打电话时,

  • 如果我使用某种硬编码条件,例如,我会得到Typescript错误消息: 当然,我可以在这里定义来禁用任何TypeScript检查,代码将编译并运行,但我的目标是能够仅通过签名来区分函数(而不依赖于其他约定,如名称或其他标志)。

  • 问题内容: 我想知道是否可以在运行时设置注释变量? 问题答案: 不,那不可能。 注释以常量值的形式存储在类文件中,并且无法在运行时进行计算。 您能做的最好的事情就是存储有关如何计算值的某种“指令”。 例如,您可以使用某种脚本语言存储一个简单的表达式,然后在读取注释值时执行该表达式,或者可以指定要获取真实值的调用方法的名称。

  • 我试图使用运行时资源覆盖(RRO)机制覆盖xml资源,该资源使用自定义属性和自定义名称空间。当构建覆盖APK时,aapt2(link)抛出一个属性未找到错误。 如何使自定义属性从主应用程序到覆盖层? 甚至可以在覆盖层中使用自定义属性吗? 详细信息: 覆盖包含两个文件: AndroidManifest.xml: 和xml文件res/xml/my_config.xml: aapt2 compile-v

  • 问题内容: 给定具有以下结构的类。我试图确定由泛型方法的调用者分配的参数T的类型。 在C#中,我将使用“ default(T)”或“ typeof(T)”,但我试图在Java中执行此操作。谁知道/如何做?我真的不需要实例,我只需要Class定义。 问题答案: 你不能那样做。您可以做的是使方法签名如下: 然后,您可以使用给定的类检查类型。

  • 问题内容: 是否可以在运行时创建hibernate的Entity类(带有注释)?它应与也在运行时中添加的表相关。重要的是,该实体应该对Hibernate可见。一般情况下是否可能,请您给我有关该问题的任何建议吗?我了解,反射是关键字,但需要更多的单词。问候。 问题答案: 在这种情况下,您可能希望在运行时以编程方式创建Hibernate Session Factory,并传入创建的新映射,请访问htt