python - 如何在 Django 中将上传的文件保存到 C:?
问题描述
我的 Django 项目中有一个 PDF 模型。我想将这些文件保存到我的 C: 目录而不是我的项目目录。( 保存到 C:\otc )
我不必像在模型(customer_customer_name)中那样归档它,我只想将它保存在 C 中名为 otc 的文件中:
以及如何为上传的 PDF 文件的名称添加时间戳?
模型.py
def customer_directory_path(self, filename):
return 'customer_{0}/{1}'.format(self.owner.customer_name, filename)
class Pdf(models.Model):
id = models.AutoField(primary_key=True)
title = models.CharField(max_length=200)
pdf = models.FileField(upload_to=customer_directory_path)
type = models.CharField(max_length=200, default='Select', choices=CHOICES)
year = models.CharField(max_length=200, default='Select')
created_date = models.DateTimeField(default=datetime.now())
解决方案
如果您FileSystemStorage
用作默认文件存储,则upload_to
附加到MEDIA_ROOT
. 您需要更改MEDIA_ROOT
为C:
是否希望所有上传都在那里或为该字段创建新存储。更多在doc中。
created_date
字段应该看起来像这样:
created_date = models.DateTimeField(default=datetime.now)
否则所有行都将具有相同的值。
那么你可以试试:
def customer_directory_path(self, filename):
filename = "{}_filename".format(self.created_date)
return 'customer_{0}/{1}'.format(self.owner.customer_name, filename)
顺便说一句:不确定您owner
在该功能中的位置。
编辑:
如果您不想创建新的存储,您应该也可以使用这种方法。
pdf = models.FileField(upload_to=customer_directory_path, storage=FileSystemStorage(location="C:"))
推荐阅读
- javascript - 如何纠正/解析 xHTML 错误
- php - php 容器的 podman dns 名称
- reactjs - Auth0 React 快速入门登录不起作用,401 未经授权
- ios - 使用 uicollection 视图 Swift 更新单个视图
- node.js - 从 EventEmitter 附加事件函数数组中删除断开连接时的 Socket.IO 发射器
- swift - SwiftUI ObservedObject 使视图在更新时弹出
- html - Vue模板中第一行三个div,第二行四个div
- sass - SASS 结合了来自 vuetify 的 flex 实用程序的多个类
- javascript - 有没有更好的方法来解决 JavaScript 中的递归斐波那契
- android - 在android studio中将字节顺序转换为nativeOrder()时得到“FirebaseMLException:输入ByteBuffer应该是直接ByteBuffer”