2013-03-25 9 views
5
from forms import MyContactForm 
from django.views.generic.edit import FormView 

class MyFormView(FormView): 
    template_name = 'my_forms.html'          
    form_class = MyContactForm 
    success_url = '/thanks/' 

Nel mio modello, la forma è chiamata in questo modo:Come specificare il nome della variabile del modulo utilizzata nel modello di un FormView? (Object_context_name per le forme)

{{ form }}

Ma come posso chiamare in questo modo:

{{ my_contact_form }}?

Questo sarebbe il modulo equivalente a object_context_name (per i modelli).

+0

http://stackoverflow.com/questions/6907388/updating-context-data-in-formview-form-valid-method – catherine

risposta

8

Si potrebbe sovrascrivere get_context_data:

class MyFormView(FormView): 
    template_name = 'my_forms.html'          
    form_class = MyContactForm 
    success_url = '/thanks/' 

    # from ContextMixin via FormMixin  
    def get_context_data(self, **kwargs): 
     data = super(MyFormView, self).get_context_data(**kwargs) 

     data['my_contact_form'] = data.get('form') 

     return data 
+0

Avete qualche idea di cosa fare quando si desidera utilizzare più moduli? Ho solo pensato di passarli a una chiave dati e di eliminare 'form_class'. Ma ottengo un 'TypeError, NoneType non è callable' quando lo faccio. – Bentley4

+1

È possibile inviare solo un modulo. 'generic.edit.FormView' gestisce un modulo. Guarda la [fonte di FormMixin e ProcessFormView] (https://github.com/django/django/blob/master/django/views/generic/edit.py): dovrai sovrascrivere 'get' e' form_invalid 'per rendere tutti i moduli e dovrai sovrascrivere' post' per determinare quale modulo è stato inviato ed elaborarlo. A questo punto, non penso che dovresti ereditare da 'FormView'. –

+1

Controlla http://stackoverflow.com/questions/6276398/multiple-form-classes-in-django-generic-class-views, in particolare il secondo aggiornamento della risposta accettata. –

Problemi correlati