首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django窗体:编辑图像字段(删除并显示现有的)

Django窗体:编辑图像字段(删除并显示现有的)
EN

Stack Overflow用户
提问于 2019-11-04 17:28:25
回答 1查看 1.1K关注 0票数 6

我正在尝试使用一个包含图像字段的Django模型表单,但是我有两个问题:

  1. 我不知道如何在输入
  2. 中显示图像的当前名称,我不知道如何提供删除图像

的方法

窗体

代码语言:javascript
运行
复制
class CityLogoForm(forms.ModelForm):
    logo = forms.ImageField(widget=forms.FileInput(attrs={'class': 'custom-file-input'}), required=False)

    class Meta:
        model = City
        fields = ['logo']

视图

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
<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循环中完成。

EN

回答 1

Stack Overflow用户

发布于 2019-11-13 10:08:04

我不知道如何在输入中显示图像的当前名称

向您的模型中添加一个属性,如果图像字段不是空白,则该属性返回图像文件名,例如:

代码语言:javascript
运行
复制
import os

class MyModel(models.Model):

    image = models.ImageField(...)

    @property
    def image_name(self):
        return os.path.basename(self.image.path) if self.image else ''

然后在html模板中添加{{ your_model.image_name }},在其中需要显示当前图像名。

我不知道如何提供一种删除图像的方法

最近我也遇到了同样的问题,我通过在html中添加一个隐藏的复选框clear_image (当用户单击clear按钮时使用js检查它)来解决这个问题,而不是在django表单中处理接收到的值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58698390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档