Python Django表单保存前更改实例属性
正如我在标题中所说:Python Django表单保存前更改实例属性,python,django,forms,Python,Django,Forms,正如我在标题中所说: def profile(request, template='/member/profile.html'): ..... member = get_object_or_404(Member, id=id) # >>> member.qrcode # <ImageFieldFile: upload/qrcode/2014-11-12/99_1.41578387725e12.jpg> if req
def profile(request, template='/member/profile.html'):
.....
member = get_object_or_404(Member, id=id)
# >>> member.qrcode
# <ImageFieldFile: upload/qrcode/2014-11-12/99_1.41578387725e12.jpg>
if request.method == 'POST':
form = ProfileForm(request.POST, request.FILES, instance=member)
# >>> member.qrcode
# <ImageFieldFile: 20140901192104.png>
if form.is_valid():
member = form.save(commit=False)
.....
def profile(请求,模板='/member/profile.html'):
.....
成员=获取对象或404(成员,id=id)
#>>>member.qrcode
#
如果request.method==“POST”:
form=ProfileForm(request.POST,request.FILES,instance=member)
#>>>member.qrcode
#
如果form.is_有效():
member=form.save(commit=False)
.....
表单实例member
在Form=ProfileForm(request.POST,request.FILES,instance=member)之后立即更改
因为我只想在member.type==1
时保存member,并根据member
和表单中一些数据的比较结果更改一些字段。已清理的\u数据
我认为在调用form.save()
之前更改成员的属性是非常糟糕的
我怎样才能改变它
如果使用commit=False调用save(),则它将返回一个尚未保存到数据库的对象
这种方法没有错——它是有文档记录的。另外,在某些情况下,您可以使用pre\u save
其中instance==form.save(commit=False)
实例成员在form=ProfileForm(request.POST,request.FILES,instance=member)
之后立即更改,它只创建了ProfileForm
对象,但实际上实例成员
在我的机器上创建了ProfileForm
对象后发生了变化win7 py2.7 django 1.6.7
。你能做一个测试吗?我没有win7
,但目前使用的是相同的py2.7 django 1.6.7
,没关系,我已经做了简单的测试-self.object returnsome_字段的模型
,我已经以表单形式更改了这个字段,并将它发送到updateview,在那里放置printsprint(self.object)
form=self.form\u类(request.POST,instance=self.object)
print(self.object)
两个值相同的结果
member = form.save(commit=False)
if member.type == 1:
member.save()