【发布时间】:2017-11-26 07:50:44
【问题描述】:
背景:我正在创建 Django 应用来管理收据。用户将创建一个新的Receipt,在一些字段中填写收据信息(即成本、物品、购买日期等),然后上传收据副本以供存储。
问题:我想根据用户输入的购买日期将收据 *.pdf 文件存储在一个文件夹中,但是在实例化之前我无法访问self.date.strftime('%Y %B')。
示例代码:
class Receipt(models.Model):
date = models.DateField()
item = models.CharField(max_length=128)
scan = models.FileField(upload_to='scans/{d}/'.format(d=date.strftime('%Y %B')),
max_length=100)
研究:
这个SO question 需要做类似的事情,但出于不同的原因。他得到的答案是,如果不覆盖save() 方法,这是不可能的。这将如何处理文件上传?
这个SO question专门解决了如何用函数设置FileField的参数;但是,它不涉及使用尚未完成模型中的字段(即Receipt)。
我的解决方法是什么?
【问题讨论】:
-
绝对不是那个问题的重复。我的问题具体涉及使用模型字段设置自己的字段。
-
上述问题对您的问题有一个完美的答案。创建一个使用您的日期字段并返回文件的绝对路径的函数。
-
我不这么认为?我的收据是否不必在可用于其他功能之前完成初始化?在您链接的问题中,他正在从
instance返回信息,这是一个已经存在的模型。 -
不,至少在这种情况下,它真的不需要初始化才能用于其他功能。仔细阅读这两个问题并回答,我 100% 确信它对您有用。
标签: python django file file-upload django-models