【发布时间】:2020-03-01 01:29:57
【问题描述】:
我正在尝试使用带有图像字段的 Django 模型表单,但我遇到了两个问题:
- 我不知道如何在输入中显示图像的当前名称
- 我不知道如何提供删除图像的方法
表格:
class CityLogoForm(forms.ModelForm):
logo = forms.ImageField(widget=forms.FileInput(attrs={'class': 'custom-file-input'}), required=False)
class Meta:
model = City
fields = ['logo']
观看次数:
def management_form_general(request, city_slug):
city = City.objects.get(slug=city_slug)
if request.method == 'POST':
logo_form = CityLogoForm(request.POST, request.FILES, instance=city)
if logo_form.is_valid():
logo_form.save()
else:
logo_form = CityLogoForm(instance=city)
return render(request, 'management/form/city_general.html', {'city': city, 'logo_form': logo_form})
html:
<form action="" enctype="multipart/form-data" method="post">
<div class="form-group row">
<label for="id_city" class="col-sm-2 col-form-label form_title">{{ logo_form.logo.label }}</label>
<div class="custom-file">
{{ logo_form.logo }}
<label class="custom-file-label" for="{{ logo_form.logo.id_for_label }}" data-browse="Choisir Image">{{ logo_form.logo.label }}</label>
</div>
</div>
</form>
当用户上传内容时,我有一个脚本更改标签,但我找不到获取图像字段当前值的方法(对于正常的,它已正确预填充)。 由于它似乎没有预先填充输入,因此当输入为空时它似乎会被忽略,因此永远不会删除当前徽标。
编辑:如果可能,答案需要在 formset_factory 上的 for 循环中可行
【问题讨论】:
-
您可以查看 django-admin 的功能。看看widget html & widget form field code的源代码
-
在
的 src 中尝试
{{ city.logo.url }}进行展示 -
嘿@YugandharChaudhari,谢谢,但是当我使用 formset_factory 时我该怎么办?执行 foo 循环时,我不会看到模型。正在寻找一种几乎每次都有效但似乎没有的方法
标签: django django-forms django-file-upload