Django 更新现有 ImageField 不起作用

如何解决Django 更新现有 ImageField 不起作用

我想让用户能够更新与记录关联的图像。 我有一个编辑表单,允许用户更新记录的各种元素,除了图像字段之外,所有这些元素都在正确更新。 分配给记录的图像字段正在显示,因此在创建记录时将图像添加到记录中可以正常工作。 我看过类似的问答,但没有帮助。

Models.py

class ComicInput(models.Model):
        CoverPic = models.ImageField(upload_to='Comic_Pics',default='Comic_Pics/default.png',blank=True)

        def __str__(self):
            return '%s %s %s' % ( self.CoverPic)

        def __unicode__(self):
            return '%s %s %s' % ( self.CoverPic)

Forms.py

 class ComicInputForm(forms.ModelForm):
    class Meta:
        model = ComicInput
        fields = '__all__'

Views.Py

def edit(request,id):
   record = ComicInput.objects.get(pk = id)
   return render(request,'app/edit.html',{"ComicInput":record})

def update(request,id):
   updaterecord = ComicInput.objects.get(pk = id)
   if request.method == "POST":
    form = editform(request.POST or None,request.FILES or None,instance=updaterecord)
    if form.is_valid():
        edit = form.save(commit=False)
        edit.save()
        return ComicInventory(request)
    else :
        form = editform(instance=updaterecord)
        messages.error(request,"Error,please try again taking note of validation rules on the right")
        return render(request,{'form':form,"ComicInput":updaterecord})

def delete(request,id):
   deleterecord = ComicInput.objects.get(pk = id)
   deleterecord.delete()
   return ComicInventory(request)

Urls.py

path('edit/<int:id>',views.edit,name='edit'),path('update/<int:id>',views.update,name='update'),path('delete/<int:id>',views.delete,name='delete'),

模板 - edit.html

<!DOCTYPE html>
{% extends "app/layout.html" %}

{% block content %}
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <Meta charset="utf-8" />
    <title>Update Collection Record</title>
</head>
<body>
    <h1>Update your Comic</h1>
    <h4>Values for inputs that contain validation are noted on the right</h4>
        {%if messages%}
            {%for updaterecord in messages%}
            <h3 style="color: green; float:">{{updaterecord}}</h3> 
            {%endfor%}
        {%endif%}
    <div class="container">
        <form method="POST" action="/update/{{ComicInput.id}}" novalidate enctype="multipart/form-data">
            {% csrf_token %}
            <table class="table table-striped">
                <thead class="thead-dark">
                    <tr>
                        <th scope="col">Input</th>
                        <th scope="col">Value</th>
                    </tr>
                </thead>

                <tr>
                    <td>ID</td>
                    <td><input type="text" name="id" value="{{ComicInput.id}}" readonly /></td>
                    <td>Read Only</td>
                </tr>

                <tr>
                    <td>CoverPic</td>
                    <td><input type="text" name="CoverPic" value="{{ComicInput.CoverPic}}" /></td>
                    <td>Must be a file path URL</td>
                </tr>


            </table>
            <input type="submit" value="Update"/> | <a href="{% url 'ComicInventory' %}"> View Collection</a>
        
        
        </form>
    </div>
</body>

{% endblock %}
</html>

新 HTML

<!DOCTYPE html>
{% extends "app/layout.html" %}

{% block content %}
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <Meta charset="utf-8" />
    <title>Update Collection Record</title>
</head>
<body>
    <h1>Update your Comic</h1>
    <h4>Values for inputs that contain validation are noted on the right</h4>
        {%if messages%}
            {%for updaterecord in messages%}
            <h3 style="color: green; float:none">{{updaterecord}}</h3> 
            {%endfor%}
        {%endif%}
    <div class="container">
        <form method="POST" action="/update/{{ComicInput.id}}" enctype="multipart/form-data">
            {% csrf_token %}
            <table class="table table-striped">


             <thead class="thead-dark">
                    <tr>
                        <th scope="col">Field Name</th>
                        <th scope="col">Current Value</th>
                        <th scope="col">Edit Values</th>

                    </tr>
                </thead>

                <tr>
                    <td>ID</td>
                    <td><input type="text" name="id" value="{{ComicInput.id}}" readonly /></td>
                    <td>Read Only</td>
                </tr>
                <tr>
                    <td>Publisher</td>
                    <<td>"{{ComicInput.Publisher}}"</td>
                    <td>{{ form.Publisher}}</td>
                </tr>

                <tr>
                    <td>BackPic</td>
                    <td>{{form.BackPic}}</td>
                    <td> Current path: "{{ComicInput.BackPic}}" Must be a file path URL</td>
                </tr>
                <tr>
                    <td>CoverPic</td>
                    <td>{{ form.CoverPic}}</td>
                    <td> Current path: "{{ComicInput.CoverPic}}" Must be a file path URL</td>
                </tr>

                <tr>
                    <td>ContentPic</td>
                    <td>{{ form.ContentPic}}</td>
                    <td> Current path: "{{ComicInput.ContentPic}}" Must be a file path URL</td>

            </table>
            <input type="submit" value="Update"/> | <a href="{% url 'ComicInventory' %}"> View Collection</a>
    

    
    
    </form>
</div>

{% 结束块 %}

解决方法

编辑视图

def edit(request,id):
   record = ComicInput.objects.get(pk = id)
   form = editform(request.POST or None,request.FILES or None,instance=record)
   return render(request,'app/edit.html',{'form':form,"ComicInput":record})

**HTML**

<!DOCTYPE html>
{% extends "app/layout.html" %}

{% block content %}
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title>Update Collection Record</title>
</head>
<body>
    <h1>Update your Comic</h1>
    <h4>Values for inputs that contain validation are noted on the right</h4>
        {%if messages%}
            {%for updaterecord in messages%}
            <h3 style="color: green; float:none">{{updaterecord}}</h3> 
            {%endfor%}
        {%endif%}
    <div class="container">
        <form method="POST" action="/update/{{ComicInput.id}}" enctype="multipart/form-data">
            {% csrf_token %}
            <table class="table table-striped">


             <thead class="thead-dark">
                    <tr>
                        <th scope="col">Field Name</th>
                        <th scope="col">Current Value</th>
                        <th scope="col">Edit Values</th>

                    </tr>
                </thead>
                  {{form}}
            </table>
    
    </form>
</div>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?