我正在使用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