2014-03-29 57 views
0

我得到了2頁。步驟2和步驟3.我想要做的是將所選對象從步驟2窗體傳遞到步驟3窗體,以便可以過濾步驟3窗體的對象。您可以在下面的圖片中看到2頁/表格。因此,當用戶在步驟2中選擇一所大學時,步驟3必須只顯示所選大學的課程。Django將選定對象從表單傳遞給另一個表單

我目前的代碼非常簡單,因爲我正在刪除並重寫過去幾天沒有結果的代碼。

views.py

def step2(request): 
    universities = University.objects.order_by('name').distinct() 
    return render_to_response("registration/step2.html", {'universities': universities}, RequestContext(request)) 

def step3(request): 
    courses = Course.objects.order_by('name') 
    return render_to_response("registration/step3.html", {'courses': courses}, RequestContext(request)) 

Step 2 Step 3

回答

1

在你看來,你要檢索的用戶做出的選擇,並用它來過濾的選擇下一個表格。例如:

form = FirstForm(request.POST) 
if form.is_valid(): 
    uni = form.cleaned_data['uni'] 
    courses = Course.objects.filter(university__name=uni).order_by('name') 
    return render_to_response("registration/step3.html", {'courses': courses}, RequestContext(request)) 
+0

感謝您的快速回答!通過'cleaned_data ['uni']'我得到''?或「示例大學」?也不知道該怎麼輸入forms.py: 'class FirstForm(forms.Form):university = forms.CharField()' 最後,因爲這是** def step2 **我應該添加到** def step3 **?再次感謝! (**更新**:現在,它進入步驟3,但選擇課程小部件是空的,所以我猜過濾時出了問題) – manosim

+0

首先,你應該使用大學的id作爲選項值或一些其他標識符。這樣,你可以在做過濾時使用它,即'Course.objects.filter(university__id = uni_id)'。如果課程選擇爲空,則測試是否從後端發送任何課程。 – elbear

+0

是的,你是對的!最後一個問題,使用此代碼,當您提交表單時,網址保持不變**/step/2/**而不是**/step/3/**。一切正常,但URL中的數字不會改變。 – manosim

相關問題