关于通过模型上传文件的问题

来源: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回答

时间,

2021-06-10

同学,你好!filter后的update是直接调用sql语句,不通过 model层 ,"upload_to='xxxx'"根本执行不到,所以没有前面的路径。

​使用save()会通过model层。

因此两种实现方式中使用update()方式不行

祝学习愉快!

0

0 学习 · 2433 问题

查看课程