关于通过模型上传文件的问题
来源:3-6 从ORM模型创建表单
饿少
2021-06-09 23:20:06
def upload_by_model(request):
""" 通过模型上传 """
if request.method == "POST":
form = AvatarUploadByModel(data=request.POST, files=request.FILES)
if form.is_valid():
**************
**************
else:
form = AvatarUploadByModel()
return render(request, 'upload_by_model.html', {
'form': form,
})
模型中代码省略,就是视频中的字段avatar, 参数:upload_to=‘avatar/%Y%m’
问题是:关于代码中***********部分,有两种方式
1)方式一:
avatar_obj = User.objects.get(pk=3)
avatar_obj.avatar = request.FILES[‘avatar’]
avatar.save()
这种方式,可以将我在页面中上传的文件,保存到项目路径下的文件夹中,并且更新数据库中的数据
2)方式二:
User.objects.filter(pk=3).update(avatar=request.FILES[‘avatar’])
这种方式,达不到预期,预期就是方式一产生的结果。
我认为方式一和方式二都用的都是修改数据表的方法,为什么1)可以,2)就不行。
1回答
同学,你好!filter后的update是直接调用sql语句,不通过 model层 ,"upload_to='xxxx'"根本执行不到,所以没有前面的路径。
使用save()会通过model层。
因此两种实现方式中使用update()方式不行
祝学习愉快!
相似问题