2017-03-14 7 views
0

djangoフォームSessionWizardViewを使用してフォームウィザードを実装しています。 urlの設定は次のとおりです。djangoのSessionWizardViewでリクエストオブジェクトにアクセス

url(r'^contact/(?P<pk>\d+)/$', views.ContactWizard.as_view([DummyForm, OtherForm]), name='contact'), 

ここでのアイデアは、初期データをフォームに入力できるようにプライマリキーを渡していることです。フォームは次のように別のビューから読み込まれます:

def populate_review_form(request): 
    pk = 2 
    return redirect('contact', pk=pk) 

ここでは、フォームにハードコードされた主キーを渡そうとしています。私は次のようにフォームの初期値を生成するget_form_initialをオーバーライドしていますどこ

さて、私のフォームの実装は簡単です:

class ContactWizard(SessionWizardView): 
    def get_template_names(self): 
     return "test.html" 

    def get_form_initial(self, step): 
     pk = self.request.GET.get('pk') 
     # Just attempt to print the primary key 
     print pk, self.request.GET 
     return {}  

    def done(self, form_list, **kwargs): 
     return HttpResponseRedirect('index') 

問題は、これは常にNone <QueryDict: {}>を印刷していることです。したがって、基本的に私のパラメータが渡されていないか、正しいrequestオブジェクトにアクセスできません。 Djangoでこの通信を行うことは可能ですか?

答えて

1

pkself.kwargsに格納されます。

pk = self.kwargs['pk'] 
+0

ありがとうございました!それは動作します。まだこの周りに私の頭を得て! – Luca

関連する問題