Django表单MultipleChoiceField在保存时恢复原值
我写了一个自定义的多选字段。现在一切都正常,但当我提交表单时,选中的值又回到了最初的选项,尽管表单验证是通过的。
我的代码大概是这样的:
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 })
我没有包含其他字段等内容,但这基本上就是我遇到问题的代码。有没有人知道怎么才能在表单提交后显示新的值,或者为什么它又回到了原来的值?
谢谢!
1 个回答
3
你总是传递一个没有绑定的表单实例,试试这个:
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 })