django表单MultipleChoiceField在保存时恢复为原始值 [英] django forms MultipleChoiceField reverts to original value on save
问题描述
我的代码看起来像这样: / 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屋!