如何在Django中更新ImageField?

奈米什·盖迪亚(Naimish Gedia)

我是Django的新手。我在更新ImageField时遇到问题。我有以下代码

在models.py中

 class ImageModel(models.Model):
      image_name = models.CharField(max_length=50)
      image_color = models.CharField(max_length=50)
      image_document = models.ImageField(upload_to='product/')

-这是我的forms.py

 class ImageForm(forms.ModelForm):
    class Meta:
        model = ImageModel
        fields = ['image_name', 'image_color' , 'image_document']

在HTML文件中(editproduct.html)

<form method="POST" action="/myapp/updateimage/{{ singleimagedata.id }}">
       {% csrf_token %}
        <input class="form-control" type="text" name="image_name" value="{{ singleimagedata.image_name}}">
        <input class="form-control" type="file" name="image_document">
        <button type="submit" class="btn btn-primary">UPDATE PRODUCT</button>
</form>

-myapp是我的应用程序名称。{{singleimagedata}}是包含所有提取数据的变量

-urls.py

urlpatterns = [
    path('productlist', views.productlist, name='productlist'),
    path('addproduct', views.addproduct, name='addproduct'),
    path('editimage/<int:id>', views.editimage, name='editimage'),
    path('updateimage/<int:id>', views.updateimage, name='updateimage'),
]

这是我的views.py

def productlist(request):
    if request.method == 'GET':
        imagedata = ImageModel.objects.all()
        return render(request,"product/productlist.html",{'imagedata':imagedata})

def addproduct(request):
    if request.method == 'POST':
        form = ImageForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            messages.add_message(request, messages.SUCCESS, 'Image Uploaded')
            return redirect('/myapp/productlist')
    else:
        imageform = ImageForm()
        return render(request, "product/addproduct.html", {'imageform': imageform})

def editimage(request, id):
    singleimagedata = ImageModel.objects.get(id=id)
    return render(request, 'product/editproduct.html', {'singleimagedata': singleimagedata})

def updateimage(request, id):  #this function is called when update data
    data = ImageModel.objects.get(id=id)
    form = ImageForm(request.POST,request.FILES,instance = data)
    if form.is_valid():
        form.save()
        return redirect("/myapp/productlist")
    else:
        return render(request, 'demo/editproduct.html', {'singleimagedata': data})
  • 我的图像上传工作正常。我无法在更新数据时更新图像。其余数据已更新。我不知道如何更新图像以及如何删除旧图像并将新图像放入目录。
宾比

我认为您错过了enctype="multipart/form-data",请尝试更改:

<form method="POST" action="/myapp/updateimage/{{ singleimagedata.id }}">

进入

<form method="POST" enctype="multipart/form-data" action="{% url 'updateimage' id=singleimagedata.id %}">

也不要错过将image_color字段添加到您的html输入中。
因为在您的情况下,image_color字段模型被设计为必填字段

从目录中删除并更新旧的图像文件;

import os
from django.conf import settings

# your imported module...


def updateimage(request, id):  #this function is called when update data
    old_image = ImageModel.objects.get(id=id)
    form = ImageForm(request.POST, request.FILES, instance=old_image)

    if form.is_valid():

        # deleting old uploaded image.
        image_path = old_image.image_document.path
        if os.path.exists(image_path):
            os.remove(image_path)

        # the `form.save` will also update your newest image & path.
        form.save()
        return redirect("/myapp/productlist")
    else:
        context = {'singleimagedata': old_image, 'form': form}
        return render(request, 'demo/editproduct.html', context)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在 Django 模板中显示 ImageField

来自分类Dev

如何在django / mezzanine模板中显示上载的django ImageField?

来自分类Dev

如何在Django ImageField中验证图像格式

来自分类Dev

如何在Django的ImageField的路径中设置变量?

来自分类Dev

如何在Django的ImageField中放置数据?

来自分类Dev

如何仅调整 django Imagefield 中的宽度

来自分类Dev

如何在模板中显示 ImageField 图像?

来自分类Dev

如何在Django的ImageField中当前重命名,清除和更改标签

来自分类Dev

如何在Django中根据字段名称更改ImageField的upload_to参数?

来自分类Dev

如何在Django中根据字段名称更改ImageField的upload_to参数?

来自分类Dev

如何在使用 Javascript 提交图像之前在 Django Imagefield 中调整图像大小

来自分类Dev

如何在Django中动态更新模型?

来自分类Dev

如何在Anaconda中更新Django?

来自分类Dev

如何在Django中更新/删除内容?

来自分类Dev

如何在Django中更新时间字段

来自分类Dev

如何在Django的imagefield中将图像显示为模板

来自分类Dev

Django:如何在事务中包装批量更新/插入操作?

来自分类Dev

如何在Django-Rest-Framework中更新ManyToMany“ self”

来自分类Dev

如何在Django的inlineformset中获取更新的字段列表

来自分类Dev

如何在Django中定期更新后台任务状态?

来自分类Dev

如何在Django中自动更新模型字段?

来自分类Dev

如何在Django Rest Framework中动态更新视图集

来自分类Dev

如何在 Django 模型中同步更新实例?

来自分类Dev

如何在 Visual Studio 2017 中更新 Django

来自分类Dev

如何在 Django 中编写视图来更新模型图像?

来自分类Dev

Django 1.11 - 如何在 ImageField 中使用 height_field 和 width_field

来自分类Dev

如何使用表单更改Django ImageField的文件?

来自分类Dev

Django - 如何为 DRF ImageField 编写测试

来自分类Dev

ImageField和Django中的几种尺寸

Related 相关文章

  1. 1

    如何在 Django 模板中显示 ImageField

  2. 2

    如何在django / mezzanine模板中显示上载的django ImageField?

  3. 3

    如何在Django ImageField中验证图像格式

  4. 4

    如何在Django的ImageField的路径中设置变量?

  5. 5

    如何在Django的ImageField中放置数据?

  6. 6

    如何仅调整 django Imagefield 中的宽度

  7. 7

    如何在模板中显示 ImageField 图像?

  8. 8

    如何在Django的ImageField中当前重命名,清除和更改标签

  9. 9

    如何在Django中根据字段名称更改ImageField的upload_to参数?

  10. 10

    如何在Django中根据字段名称更改ImageField的upload_to参数?

  11. 11

    如何在使用 Javascript 提交图像之前在 Django Imagefield 中调整图像大小

  12. 12

    如何在Django中动态更新模型?

  13. 13

    如何在Anaconda中更新Django?

  14. 14

    如何在Django中更新/删除内容?

  15. 15

    如何在Django中更新时间字段

  16. 16

    如何在Django的imagefield中将图像显示为模板

  17. 17

    Django:如何在事务中包装批量更新/插入操作?

  18. 18

    如何在Django-Rest-Framework中更新ManyToMany“ self”

  19. 19

    如何在Django的inlineformset中获取更新的字段列表

  20. 20

    如何在Django中定期更新后台任务状态?

  21. 21

    如何在Django中自动更新模型字段?

  22. 22

    如何在Django Rest Framework中动态更新视图集

  23. 23

    如何在 Django 模型中同步更新实例?

  24. 24

    如何在 Visual Studio 2017 中更新 Django

  25. 25

    如何在 Django 中编写视图来更新模型图像?

  26. 26

    Django 1.11 - 如何在 ImageField 中使用 height_field 和 width_field

  27. 27

    如何使用表单更改Django ImageField的文件?

  28. 28

    Django - 如何为 DRF ImageField 编写测试

  29. 29

    ImageField和Django中的几种尺寸

热门标签

归档