Loading django/views/generic/edit.py +17 −23 Original line number Diff line number Diff line Loading @@ -31,16 +31,19 @@ class FormMixin(object): """ Returns an instance of the form to be used in this view. """ return form_class(**self.get_form_kwargs()) def get_form_kwargs(self): """ Returns the keyword arguments for instanciating the form. """ kwargs = {'initial': self.get_initial()} if self.request.method in ('POST', 'PUT'): return form_class( data=self.request.POST, files=self.request.FILES, initial=self.get_initial() ) else: return form_class( initial=self.get_initial() ) kwargs.update({ 'data': self.request.POST, 'files': self.request.FILES, }) return kwargs def get_context_data(self, **kwargs): return kwargs Loading Loading @@ -75,22 +78,13 @@ class ModelFormMixin(FormMixin, SingleObjectMixin): model = self.get_queryset().model return model_forms.modelform_factory(model) def get_form(self, form_class): def get_form_kwargs(self): """ Returns a form instantiated with the model instance from get_object(). Returns the keyword arguments for instanciating the form. """ if self.request.method in ('POST', 'PUT'): return form_class( data=self.request.POST, files=self.request.FILES, initial=self.get_initial(), instance=self.object, ) else: return form_class( initial=self.get_initial(), instance=self.object, ) kwargs = super(ModelFormMixin, self).get_form_kwargs() kwargs.update({'instance': self.object}) return kwargs def get_success_url(self): if self.success_url: Loading docs/ref/class-based-views.txt +22 −17 Original line number Diff line number Diff line Loading @@ -413,27 +413,34 @@ FormMixin .. method:: get_initial() Retrieve initial data for the form. By default, returns :attr:`FormMixin.initial`. :attr:`.initial`. .. method:: get_form_class() Retrieve the form class to instantiate. By default, :attr:`FormMixin.form_class`. Retrieve the form class to instantiate. By default :attr:`.form_class`. .. method:: get_form(form_class) Instantiate an instance of ``form_class``. If the request is a ``POST`` or ``PUT``, the request data (``request.POST`` and ``request.FILES``) will be provided to the form at time of construction. Instantiate an instance of ``form_class`` using :meth:`.get_form_kwargs`. .. method:: get_form_kwargs() Build the keyword arguments requried to instanciate an the form. The ``initial`` argument is set to :meth:`.get_initial`. If the request is a ``POST`` or ``PUT``, the request data (``request.POST`` and ``request.FILES``) will also be provided. .. method:: get_success_url() Determine the URL to redirect to when the form is successfully validated. Returns :attr:`FormMixin.success_url` by default. validated. Returns :attr:`.success_url` by default. .. method:: form_valid() Redirects to :attr:`ModelFormMixin.success_url`. Redirects to :meth:`.get_success_url`. .. method:: form_invalid() Loading @@ -449,9 +456,9 @@ FormMixin .. note:: Views mixing :class:`~django.views.generic.edit.FormMixin` must provide an implementation of :meth:`~FormMixin.form_valid` and :meth:`~FormMixin.form_invalid`. Views mixing :class:`FormMixin` must provide an implementation of :meth:`.form_valid` and :meth:`.form_invalid`. ModelFormMixin ~~~~~~~~~~~~~~ Loading Loading @@ -490,12 +497,10 @@ ModelFormMixin :attr:`~SingleObjectMixin.model`, depending on which attribute is provided. .. method:: get_form(form_class) .. method:: get_form_kwargs() Instantiate an instance of ``form_class``. If the request is a ``POST`` or ``PUT``, the request data (``request.POST`` and ``request.FILES``) will be provided to the form at time of construction. The current instance (``self.object``) will also be provided. Add the current instance (``self.object``) to the standard :meth:`FormMixin.get_form_kwargs`. .. method:: get_success_url() Loading @@ -506,7 +511,7 @@ ModelFormMixin .. method:: form_valid() Saves the form instance, sets the current object for the view, and redirects to :attr:`ModelFormMixin.success_url`. redirects to :meth:`.get_success_url`. .. method:: form_invalid() Loading Loading
django/views/generic/edit.py +17 −23 Original line number Diff line number Diff line Loading @@ -31,16 +31,19 @@ class FormMixin(object): """ Returns an instance of the form to be used in this view. """ return form_class(**self.get_form_kwargs()) def get_form_kwargs(self): """ Returns the keyword arguments for instanciating the form. """ kwargs = {'initial': self.get_initial()} if self.request.method in ('POST', 'PUT'): return form_class( data=self.request.POST, files=self.request.FILES, initial=self.get_initial() ) else: return form_class( initial=self.get_initial() ) kwargs.update({ 'data': self.request.POST, 'files': self.request.FILES, }) return kwargs def get_context_data(self, **kwargs): return kwargs Loading Loading @@ -75,22 +78,13 @@ class ModelFormMixin(FormMixin, SingleObjectMixin): model = self.get_queryset().model return model_forms.modelform_factory(model) def get_form(self, form_class): def get_form_kwargs(self): """ Returns a form instantiated with the model instance from get_object(). Returns the keyword arguments for instanciating the form. """ if self.request.method in ('POST', 'PUT'): return form_class( data=self.request.POST, files=self.request.FILES, initial=self.get_initial(), instance=self.object, ) else: return form_class( initial=self.get_initial(), instance=self.object, ) kwargs = super(ModelFormMixin, self).get_form_kwargs() kwargs.update({'instance': self.object}) return kwargs def get_success_url(self): if self.success_url: Loading
docs/ref/class-based-views.txt +22 −17 Original line number Diff line number Diff line Loading @@ -413,27 +413,34 @@ FormMixin .. method:: get_initial() Retrieve initial data for the form. By default, returns :attr:`FormMixin.initial`. :attr:`.initial`. .. method:: get_form_class() Retrieve the form class to instantiate. By default, :attr:`FormMixin.form_class`. Retrieve the form class to instantiate. By default :attr:`.form_class`. .. method:: get_form(form_class) Instantiate an instance of ``form_class``. If the request is a ``POST`` or ``PUT``, the request data (``request.POST`` and ``request.FILES``) will be provided to the form at time of construction. Instantiate an instance of ``form_class`` using :meth:`.get_form_kwargs`. .. method:: get_form_kwargs() Build the keyword arguments requried to instanciate an the form. The ``initial`` argument is set to :meth:`.get_initial`. If the request is a ``POST`` or ``PUT``, the request data (``request.POST`` and ``request.FILES``) will also be provided. .. method:: get_success_url() Determine the URL to redirect to when the form is successfully validated. Returns :attr:`FormMixin.success_url` by default. validated. Returns :attr:`.success_url` by default. .. method:: form_valid() Redirects to :attr:`ModelFormMixin.success_url`. Redirects to :meth:`.get_success_url`. .. method:: form_invalid() Loading @@ -449,9 +456,9 @@ FormMixin .. note:: Views mixing :class:`~django.views.generic.edit.FormMixin` must provide an implementation of :meth:`~FormMixin.form_valid` and :meth:`~FormMixin.form_invalid`. Views mixing :class:`FormMixin` must provide an implementation of :meth:`.form_valid` and :meth:`.form_invalid`. ModelFormMixin ~~~~~~~~~~~~~~ Loading Loading @@ -490,12 +497,10 @@ ModelFormMixin :attr:`~SingleObjectMixin.model`, depending on which attribute is provided. .. method:: get_form(form_class) .. method:: get_form_kwargs() Instantiate an instance of ``form_class``. If the request is a ``POST`` or ``PUT``, the request data (``request.POST`` and ``request.FILES``) will be provided to the form at time of construction. The current instance (``self.object``) will also be provided. Add the current instance (``self.object``) to the standard :meth:`FormMixin.get_form_kwargs`. .. method:: get_success_url() Loading @@ -506,7 +511,7 @@ ModelFormMixin .. method:: form_valid() Saves the form instance, sets the current object for the view, and redirects to :attr:`ModelFormMixin.success_url`. redirects to :meth:`.get_success_url`. .. method:: form_invalid() Loading