2016-01-05 63 views
1

我有一个profile_picture=ImageField字段设置为初始值的窗体。它使用ClearableFileInput小部件。我需要自定义模板中的表单,所以我不能简单地使用{{ form.profile_picture}}。我怎么可以拆分域元素,并获得一些东西,看起来像这样:在Django模板中自定义ClearableFileInput

{{ with picture=form.profile_picture }} 
{{ picture.label_tag }} 
<a href="{{ picture.url }}"> 
    <img src="{{ picture.url }}"> 
</a> 
{{ picture.clear-picture }} 

其中{{ picture.clear-picture }}应该产生复选框以删除旧的画面

回答

2

您可以覆盖ClearableFileInput

class CustomClearableFileInput(ClearableFileInput): 
    template_with_initial = (
     '%(initial_text)s: <a href="%(initial_url)s">%(initial)s</a> ' 
     '%(clear_template)s<br />%(input_text)s: %(input)s' 
    ) 

    template_with_clear = '%(clear)s <label for="%(clear_checkbox_id)s">%(clear_checkbox_label)s</label>' 

看看render方法,

和覆盖后,设置

class ExForm(forms.Form): 
     image = ImageField(widget=CustomClearableFileInput)