2010-08-12 99 views
2

我正在保存一些Django FileField设置为使用DefaultStorage后端的上传文件。在文件上传后的某个时刻,我想移动到不同的存储后端,即更改FileField的storage属性(将源文件的内容保存到新的存储位置后进行对象更改)。只需更改FileField实例存储似乎不起作用。有没有办法修改Django FileField使用的存储后端?

这是可能的,而不使用第二个FileField模型attr被告知使用不同的存储后端?理想情况下,我希望不必在字段中加倍,并将开关放入所有引用文件的模板中。

谢谢!

+0

如果将字段加倍,则不需要“将开关放在所有引用文件的模板中” - 将用于确定在模型中的方法中使用哪个字段的逻辑放在该字段中,然后调用该方法你的模板。 – 2010-08-12 07:08:59

+0

对于每个位置都有一个字段可能没有办法,但是当我真正想要做的就是告诉我的模型FileField的一个实例,它的文件现在位于其他位置时,感觉有点笨重。 – markhellewell 2010-08-12 07:14:43

+0

好的,所以我将它作为第二个FileField实施..并不是那么糟糕:) – markhellewell 2010-08-12 08:56:13

回答

0

似乎与FileField相关联的storage没有写入数据库,因此将其设置在特定的字段实例上不会持久。相反,它是从与模型相关的FileField实例中读取的(因此,如果您有file = models.FileField(..., storage=some_storage),则在每次由Django设置模型时都将重置为some_storage)。

相关问题