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

Django中的动态文件路径

乐健
2023-03-14
问题内容

我正在尝试在Django中生成动态文件路径。我想制作一个像这样的文件系统

 -- user_12
     --- photo_1
     --- photo_2
 --- user_ 13
     ---- photo_1

我发现了一个相关的问题:具有动态路径的Django自定义图像上传字段

在这里,他们说我们可以更改upload_to路径,并指向https://docs.djangoproject.com/en/stable/topics/files/ doc。在文档中,有一个示例:

from django.db import models
from django.core.files.storage import FileSystemStorage

fs = FileSystemStorage(location='/media/photos')

class Car(models.Model):
    ...
    photo = models.ImageField(storage=fs)

但是,这仍然不是动态的,我想给Car id赋予图像名称,并且在Car定义完成之前我无法分配ID。那么如何创建带有汽车ID的路径?


问题答案:

你可以在upload_to参数中使用callable 而不是使用自定义存储。请参阅docs,并注意那里的警告,即在调用函数时可能尚未设置主键(因为可能在将对象保存到数据库之前处理了上载),因此ID可能无法使用。你可能希望考虑在模型上使用其他字段,例如slug。例如:

import os
def get_upload_path(instance, filename):
    return os.path.join(
      "user_%d" % instance.owner.id, "car_%s" % instance.slug, filename)

然后:

photo = models.ImageField(upload_to=get_upload_path)


 类似资料:
  • 问题内容: 在我的Django项目中,我对第三方应用程序具有依赖性,该第三方应用程序在具有已知模式的各个目录中生成SQLite缓存文件。 我想使用Django模型来访问这些数据库,但是显然我不能使用静态DATABASES设置。 如何在任意路径上动态打开SQLite数据库? 编辑 正如Byron Ruth所指出的,解决方案是将django.db.connections结合使用usingQuerySe

  • 问题内容: 我想动态更改log4j日志文件的路径和文件名。 我已经阅读了很多页面,几乎每个页面都告诉我应该使用此处的系统属性: [如何动态更改log4j日志文件?](http://codingdict.com/questions/141150 所以我的log4j.properties文件看起来像这样: 在我的主要方法中,我将设置新的系统属性: 但是我只是得到一个错误: 当我尝试使用以下命令读取设置

  • 我想在Log4j2中设置一个目录。xml动态。 Log4j2。xml 运行: 输出: 2017-03-15 18:20:27131主要错误 无法创建文件${sys:logDirectory}/app。记录java。伊奥。IOException: 文件名、目录名或驱动器名的语法错误 ---编辑:德语中的原始错误消息是:-- (Dateinamen,Verzeichnisnamen或Datenträg

  • 我是新的登录,我试图添加文件路径动态,与属性文件,为windows和Linux。 下面是我的代码sinppet,我如何获得${MY_HOME}的值

  • 问题内容: 文件名根据月份而变化。每个月都有一个新文件。 如何设置将与可变文件路径一起使用的连接管理器? 问题答案: 您需要为 或 属性设置表达式,以 使用SSIS包变量动态修改Excel连接管理器。

  • 问题内容: 我无法显示我的静态文件。我尝试了各种设置和目录配置等,但是它们只是显示为404。我已经安装了debug_toolbar,所以知道STATIC_URL正在到达我的请求上下文。 显示/ static的目录结构(我还将目录和用户放置在餐应用文件夹中,只是为了尝试一下。 Settings.py(一些重要的设置,尽管我已经尝试了其他各种设置): 在base.html中呈现 问题答案: 这是dja