我正在使用django-storages来保存上传到S3的图像,并且我想创建一个自定义表单域,以便在编辑时显示图像以及更改它的选项。在自定义Django ImageField表单字段中访问实例值的DRY方法?
我遇到的问题是存储在我的数据库中的路径值不是映像的完整路径,因为django-storage存储区生成完整路径。
Settings.py:
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
AWS_STORAGE_BUCKET_NAME = 'myBucketName'
AWS_LOCATION = 'mySubBucketName'
models.py:
>>> mymod = MyModel.objects.get(id=1)
>>> print mymod.my_image
upload/path/somefile.jpg
>>> print mymod.my_image.url
https://s3.amazonaws.com/myBucketName/mySubBucketName/upload/path/somefile.jpg
我没有看到我怎么可以访问mymod.my_image:
class MyModel(models.Model):
my_image = ImageField(upload_to='upload/path')
访问完整的URL的示例.url()从一个自定义的Widget中(我将render()'如下所示:
class ImageViewWidget(forms.Widget):
markup = """
<img src="%(imagepath)"/>
<input type="file" name="%(name)s"/>
"""
def render(self, name, value, attrs=None):
output = self.markup % {
"name": name,
"imagepath": "<<<< MAGIC CODE GOES HERE >>>>"
}
return mark_safe(output)
更新:
我正在寻找一个DRY的办法处理这一问题。我很抱歉没有从一开始就澄清这一点
我仍然在寻找干这个问题的方法。 Django存储和/或Django不是一个小改动来支持我想要做的事情吗? – 2011-04-02 21:10:14