回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我是Django的新手。我在更新ImageField时遇到问题。我有以下代码<br/><br/></p>
<p>在models.py中<br/><br/></p>
<pre><code> 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/')
</code></pre>
<p>-这是我的表格。py<br/></p>
<pre><code> class ImageForm(forms.ModelForm):
class Meta:
model = ImageModel
fields = ['image_name', 'image_color' , 'image_document']
</code></pre>
<p>在Html文件(editproduct.Html)中</p>
<pre><code><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>
</code></pre>
<p>-myapp是我的应用程序名称。{{singleimagedata}}是一个包含所有获取数据的变量</p>
<p>-url.py</p>
<pre><code>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'),
]
</code></pre>
<p>这是我的观点</p>
<pre><code>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})
</code></pre>
<ul>
<li>我的图像上传工作正常。我无法在更新数据时更新图像。其余数据已更新。我不知道如何更新图像以及如何删除旧图像并将新图像放入目录</李>
</ul>