2009-12-08 68 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