django 中向ImageField中图片更新问题

 问题:

  • 在models.py中定义的原始类class Goods(models.Model)中:

pic=models.ImageField(upload_to='static/images/', default='default.png', max_length=200, blank=True, null=True, verbose_name='商品图片')

  • 创建类后的pic:

  • 使用update更新后发现:

地址索引那一部分的“'static/images/'”没了

原因:

  • django filter后的update直接调用sql语句 不通过 model层 ,所以上面那段“upload_to='static/images/'”根本执行不到

解决:

  • 使用save(),这个操作通过model层 

eg:

 g=models.Goods.objects.get(id=int(gid))

 g.pic=request.FILES.get('pic',g.pic) # 没图像则赋值为原来的那个

 g.save()

Django ,保存图片可以通过使用 ImageField 字段来实现。你需要在你的 models.py 文件定义一个 ImageField 字段,并在视图处理上传的图片并将其保存到该字段。 以下是一个简单的例子: ```python from django.db import models class MyModel(models.Model): name = models.CharField(max_length=100) image = models.ImageField(upload_to='images/') def __str__(self): return self.name ``` 在这个例子,我们定义了一个名为 MyModel 的模型,并在其添加了一个名为 imageImageField 字段。`upload_to` 参数指定图片上传后应该存储在哪个文件夹。 接下来,在视图处理上传的图片并将其保存到该字段。以下是一个简单的视图函数: ```python from django.shortcuts import render from django.http import HttpResponseRedirect from .models import MyModel def my_view(request): if request.method == 'POST': name = request.POST['name'] image = request.FILES['image'] my_model = MyModel(name=name, image=image) my_model.save() return HttpResponseRedirect('/success/') return render(request, 'my_template.html') ``` 在这个视图函数,我们处理了 POST 请求,将上传的图片保存到 MyModel 对象,并将其保存到数据库。 最后,我们需要在模板创建一个表单,允许用户上传图片。以下是一个简单的模板: ```html <form method="post" enctype="multipart/form-data"> {% csrf_token %} <label for="name">Name:</label> <input type="text" name="name" id="name"> <label for="image">Image:</label> <input type="file" name="image" id="image"> <input type="submit" value="Submit"> </form> ``` 在这个模板,我们创建了一个表单,允许用户上传图片。当用户提交表单时,它将发送一个 POST 请求,并将图片和名称一起发送到服务器。服务器将处理上传的图片并将其保存到数据库
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值