我使用django-storages保存上传到S3的图像,我想创建一个自定义表单域,在编辑时显示图像,并提供一个更改它的选项。在
我遇到的问题是存储在数据库中的路径值不是映像的完整路径,就像django storages生成完整路径一样。在
在设置.py公司名称:
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
AWS_STORAGE_BUCKET_NAME = 'myBucketName'
AWS_LOCATION = 'mySubBucketName'
在模型.py公司名称:
^{pr2}$访问完整url的示例:
>>> 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.我的图片.url()从一个自定义小部件(在这里我可以像这样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)
更新:
我在找一个干巴巴的办法来解决这个问题。我很抱歉没有从一开始就澄清这一点
如果您使用ModelForm来生成使用小部件呈现的表单,则可以让它将值传递给小部件,需要编写一次代码。在
所以在你的情况下可能是:
^{pr2}$在自我实例只要在创建ModelForm时设置了模型,就应该提供对模型的访问。在
我认为重写自定义小部件中的
__init__
并传入url就可以了。在编辑:
相关问题 更多 >
编程相关推荐