django表单MultipleChoiceField在保存时恢复为原始值 [英] django forms MultipleChoiceField reverts to original value on save

查看:268
本文介绍了django表单MultipleChoiceField在保存时恢复为原始值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经写了一个自定义的MultipleChoiceField。我有一切工作正常,但是当我提交表单时,所选择的值将返回原始选项,即使表单验证确定。



我的代码看起来像这样: / p>

  class ProgrammeField(forms.MultipleChoiceField):
widget = widgets.SelectMultiple

class ProgrammeForm (forms.Form):
programs = ProgrammeField(required = False)

def __init __(self,user,* args,** kwargs):
self.fields [程序']。choices = Mymodel.objects.all()
self.fields ['programs']。initial = Mymodel.objects.filter(created = user)

view.py
如果request.method =='POST':
form = ProgrammeForm(user = request.user,data = request.POST)
如果form.is_valid():
表单。 save()
form = ProgrammeForm(request.user)

return render_to_response(form.html',{'form':form})
我没有包括所有其他的字段,

等等,但这基本上是我遇到麻烦的代码。任何人都有任何想法如何让它在表单提交后显示新的值,或者为什么要返回原始值



谢谢

解决方案

您总是传回一个未绑定的表单实例,请尝试:



view.py

  if request.method =='POST':
form = ProgrammeForm(user = request。用户,data = request.POST)
如果form.is_valid():
form.save()
else:##这是changge
form = ProgrammeForm(request。用户)
返回render_to_response('form.html',{'form':form})


I have wrote a custom MultipleChoiceField. I have everything working ok but when I submit the form the selected values go back to the original choices even though the form validates ok.

my code looks something like this:

class ProgrammeField(forms.MultipleChoiceField):
    widget = widgets.SelectMultiple

class ProgrammeForm(forms.Form):
    programmes = ProgrammeField(required=False)

    def __init__(self, user, *args, **kwargs):
        self.fields['programmes'].choices = Mymodel.objects.all()
        self.fields['programmes'].initial = Mymodel.objects.filter(created=user)

view.py
if request.method == 'POST':
    form = ProgrammeForm(user=request.user, data=request.POST)
    if form.is_valid():
        form.save()
form = ProgrammeForm(request.user)

return render_to_response(form.html', {'form': form }) 

I haven't included all the other fields etc. but this is basically the code I am having trouble with. Anyone have any ideas how to get it to display the new values after the form has been submitted or why it is going back to the original values

Thanks

解决方案

You're always passing back an unbound instance of the form, try this:

view.py

if request.method == 'POST':
    form = ProgrammeForm(user=request.user, data=request.POST)
    if form.is_valid():
        form.save()
else: ##this is the changge
    form = ProgrammeForm(request.user)
return render_to_response('form.html', {'form': form }) 

这篇关于django表单MultipleChoiceField在保存时恢复为原始值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆