【发布时间】:2010-12-24 13:13:04
【问题描述】:
表格:
class SearchJobForm(forms.Form):
query = forms.CharField()
types = forms.ModelChoiceField(queryset=JobType.objects.all(), widget=forms.CheckboxSelectMultiple())
查看
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)
提交表单后,我尝试在表单中取回其值
form = SearchJobForm(request.GET)
但它不起作用(某些字段消失)。也许是因为 ModelChoiceField。如何使用 get 方法填写表单的值?
【问题讨论】:
-
里面只有两个字段,但是你说“有些字段消失了”。表单的哪些字段不会被填充?您如何检查表单对象是否正在被填充?
-
您可以考虑先在 POST 中提交表单,然后将代码更改为 request.POST。如果这不起作用,那么您可以在其他地方寻找问题。
-
仅显示提交按钮 - 其他 2 个字段不显示(字段本身)。我不能使用帖子,因为我有分页,我不知道如何用帖子分页。
-
request.POST和request.GET都是 [QueryDicts][1],所以两者都应该工作。你确定请求参数在request.GET中吗?如果您在views.py 的顶部print request.GET它确实会显示其中的内容? [1]:docs.djangoproject.com/en/dev/ref/request-response/… -
是的,我可以看到内容。例如 ?query=d&types=1 我得到 QueryDict: {u'query': [u'd'], u'types': [u'1']} 但字段不会显示(