2017-03-14 5 views
0

J'utilise un formulaire django SessionWizardView pour implémenter un assistant de formulaire. La configuration de l'URL est la suivante. L'idée ici est que je passe une clé primaire pour que je puisse remplir le formulaire avec quelques données initiales. Le formulaire est chargé d'une autre vue comme suit:accéder à l'objet de demande dans un SessionWizardView dans django

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

Ici, je suis en train de passer une clé primaire codée en dur à la forme.

Maintenant, ma forme mise en œuvre est simple où je suis Outrepasser la get_form_initial pour générer la valeur initiale du formulaire comme suit:

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') 

Le problème est que cette affiche toujours None <QueryDict: {}>. Donc, fondamentalement mon paramètre n'est pas passé ou je suis incapable d'accéder à l'objet correct request. Est-il possible dans Django d'avoir cette communication?

Répondre

1

pk est stocké dans self.kwargs:

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

Merci! Ça marche. Toujours en train de me prendre la tête! – Luca