Django:从get方法填充表单

bar*_*rin 4 forms django

形成:

class SearchJobForm(forms.Form):
    query = forms.CharField()  
    types = forms.ModelChoiceField(queryset=JobType.objects.all(), widget=forms.CheckboxSelectMultiple())
Run Code Online (Sandbox Code Playgroud)

视图

def jobs_page(request):
if 'query' in request.GET:
    form = SearchJobForm(request.GET)
else:
    form = SearchJobForm()
variables = RequestContext(request, {

                                     'form':form,
                                     })
return render_to_response('jobs_page.html', variables)
Run Code Online (Sandbox Code Playgroud)

在我提交表单后,我尝试将其值恢复到表单中

 form = SearchJobForm(request.GET)
Run Code Online (Sandbox Code Playgroud)

但它不起作用(某些领域消失).也许是因为ModelChoiceField.如何使用get方法使用其值填充表单?

Har*_*old 7

看起来您正在尝试向用户显示预先填充的表单.为此,您需要将初始参数传递给表单:

SearchJobForm(initial=request.GET)
Run Code Online (Sandbox Code Playgroud)


mip*_*adi 0

表单对象应源自django.forms.Form

from django import forms

class SearchJobForm(forms.Form):
    query = forms.CharField()
    types = forms.ModelChoiceField()
Run Code Online (Sandbox Code Playgroud)