django表单MultipleChoiceField在保存时恢复为原始值

时间:2010-03-11 14:26:19

标签: python django django-forms

我写了一个自定义的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 个答案:

答案 0 :(得分: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 })