2009-12-08 63 views
3

形式:Django的:从get方法填写表格

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表单

form = SearchJobForm(request.GET) 

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

+0

这里只有两个字段,但您说“某些字段消失”。表单的哪些字段没有填充?你如何检查表单对象是否被填充? – cethegeek 2009-12-08 18:56:55

+1

您可以考虑先在POST中提交表单并将代码更改为request.POST。如果这不起作用,那么你可以在别处寻找问题。 – Karim 2009-12-08 19:08:16

+0

只有提交按钮出现 - 其他2个字段不显示(字段本身)。我不能使用职位,因为我有分页,我不知道如何与邮政分页。 – barin 2009-12-08 19:46:29

回答

0

表单对象应该从django.forms.Form下降:

from django import forms 

class SearchJobForm(forms.Form): 
    query = forms.CharField() 
    types = forms.ModelChoiceField() 
+0

我在我的代码中,只是忘了粘贴在这里 – barin 2009-12-08 18:49:27

+0

这个问题是在别的地方 – barin 2009-12-08 18:55:10

+0

请编辑你的问题,以反映这一点,并看到我对你的问题的评论:什么是没有得到填充表单以及如何检查数据是否填充? – cethegeek 2009-12-08 19:04:04

1

其实,你可以发表您的整个视图的方法?我只是测试它,做

form = SearchJobForm(request.GET)

工作正常。它是在周围的代码中的问题...


从你的代码,我认为你是期待值的形式来呈现回HTML与填充值...那是你如何努力检查表单对象是否已填充?这不起作用(可能不是你想要做的 - 你想要处理表单值)。

尝试增加给你的观点:

def jobs_page(request): 
    if 'query' in request.GET: 
     form = SearchJobForm(request.GET) 
     if form.is_valid(): 
      print form.cleaned_data['query'] 
      print form.cleaned_data['types'] 
     else: 
      print form.errors 
    else: 
     form = SearchJobForm() 
    variables = RequestContext(request, { 
           'form':form, 
           }) 
    return render_to_response('jobs_page.html', variables) 

检查什么被打印出来。

你真的应该通过django文档中的this trail

6

它看起来像你试图向用户显示预填充表单。要做到这一点,您需要将最初的参数传递给您的表单:

SearchJobForm(initial=request.GET) 
+1

在Django 1.9中。x只能使用SearchJobForm(initial = request.GET.dict())' – eviltnan 2016-11-24 14:31:47

+0

,这似乎不适用于列表项 – Jakobovski 2016-12-28 18:14:50