擅长:python、mysql、java
<p>我认为重写自定义小部件中的<code>__init__</code>并传入url就可以了。在</p>
<p><strong>编辑:</strong></p>
<pre><code>class ImageViewWidget(forms.Widget):
def __init__(self, *args, **kwargs):
self.path = kwargs.pop('path', '')
super(ImageViewWidget, self).__init__(*args, **kwargs)
markup = """
<img src="%(imagepath)"/>
<input type="file" name="%(name)s"/>
"""
def render(self, name, value, attrs=None):
output = self.markup % {
"name": name,
"imagepath": self.path
}
return mark_safe(output)
class MyModelForm(ModelForm):
class Meta:
model = MyModel
def __init__(self, *args, **kwargs):
image_url = ''
if self.instance:
image_url = self.instance.my_image.url
super(MyModelForm, self).__init__(*args, **kwargs)
self.fields['my_image'].widget=ImageViewWidget(path=image_url)
</code></pre>