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 return
some_字段的模型
,我已经以表单形式更改了这个字段,并将它发送到updateview,在那里放置prints
print(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()