我已经创建了一个带有部分modelForm的userUpdate视图,以更新由imageField组成的用户数据。
模板中的表单如下:
<div class='field'>{{ form.photo.label_tag }} {{ form.photo}}</div>
photo
是imageField
。
呈现的html视图为:
但是
photo
的所有属性是什么?因此,我可以根据需要单独使用它们。答案 0 :(得分:1)
您需要将小部件从with option (maxrecursion 0)
更改为ClearableFileInput
Fileinput
默认的FileField小部件为
# forms.py from django.forms.widgets import FileInput class UserForm(forms.ModelForm): class Meta: model = User fields = '__all__' widgets = { 'photo': FileInput(), }
。 https://docs.djangoproject.com/en/dev/ref/forms/widgets/#file-upload-widgets
或者,您可以为ClearableFileInput
类型字段手动呈现HTML。
file
您可以使用<div class="field">
<!-- show label of field -->
{{form.photo.label_tag}}
<!-- check for input type -->
{% if form.photo.field.widget.input_type == 'file'%}
<a href="{{ MEDIA_URL }}{{ form.photo.value }}">{{ form.photo.value }}</a><br/>
<input type="file" name="{{ form.photo.name }}" />
{% endif %}
</div>
运算符获取当前图片的网址
.
# URL of the image
photo.url
# name of the image
photo.name
的 ImageField继承了ImageField
的所有属性和方法,但还验证了上传的对象是有效的图像。
除了FileField可用的特殊属性外,ImageField还具有FileField
和height
属性。
阅读官方
docs
以获得所有属性的列表