我正在尝试使用自定义文件存储(https://bitbucket.org/david/django-storages/wiki/S3Storage).我按照指示把它放在我的settings.py中
DEFAULT_FILE_STORAGE='storages.backends.s3boto.S3BotoStorage'
Run Code Online (Sandbox Code Playgroud)
当我去导入default_storage时,它不是S3BotoStorage类型.我必须调用_setup().但是当我这样做时,我的模型的字段仍然是DefaultStorage类型
Python 2.6.6 (r266:84292, Dec 29 2010, 22:02:51)
[GCC 4.2.1 (Apple Inc. build 5646) (dot 1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from django.core.files.storage import default_storage
>>> print default_storage
<django.core.files.storage.DefaultStorage object at 0x1016f7c10>
>>> print default_storage._wrapped
None
>>> from base.models import Payload
>>> p = Payload()
>>> p.original.storage
<django.core.files.storage.DefaultStorage object at 0x1016f7c10>
>>> default_storage._setup()
>>> print default_storage._wrapped
<storages.backends.s3boto.S3BotoStorage object at 0x101ddd8d0>
>>> p.original.storage
<django.core.files.storage.DefaultStorage object at 0x1016f7c10>
>>>
Run Code Online (Sandbox Code Playgroud)
我的模型字段如何属于S3BotoStorage类型?
根据我对 django 存储的理解,存储类将始终是 DefaultStorage (除非您在模型中明确设置它)。应该在 _wrapped 类中查看。您是否尝试打印“p.original.storage._wrapped”?
从我这边来看,我得到的结果与你相同,但如果我打印 p.original.storage._wrapped,我会得到我的自定义存储类(在我的例子中)。
如果您想确保将正确的存储应用于您的字段,您还可以直接在模型中设置存储。例如 :
from l3i.shortcuts.storage import UniqueFileStorage
class TestModel(models.Model):
file = models.FileField(upload_to='file', storage=UniqueFileStorage())
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您可以这样做p.file.storage
,并且您将获得自定义类而不是 DefaultStorage 包装器。
归档时间: |
|
查看次数: |
3734 次 |
最近记录: |