Changes between Initial Version and Version 3 of Ticket #18166


Ignore:
Timestamp:
Apr 24, 2012, 9:05:43 AM (12 years ago)
Author:
Łukasz Rekucki
Comment:

Replying to tevans:

Hmm, wiki markup that turns __init__ into init is less than useful for Python discussion :/

You can use formatting: {{{ __init__ }}} will show as __init__. There's both live preview and a preview button.

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #18166

    • Property Needs documentation set
    • Property Needs tests set
  • Ticket #18166 – Description

    initial v3  
    1 When we use a formset, each form is instantiated by the method BaseFormSet._construct_forms(), which is called from BaseFormSet.__init__()
     1When we use a formset, each form is instantiated by the method {{{BaseFormSet._construct_forms()}}}, which is called from {{{BaseFormSet.__init__()}}}
    22
    3 _construct_forms() allows for additional kwargs to be passed through to the individual form constructor, but BaseFormSet.__init__() does not provide any mechanism for kwargs to be passed through to the _construct_forms() call.
     3{{{_construct_forms()}}} allows for additional kwargs to be passed through to the individual form constructor, but {{{BaseFormSet.__init__()}}} does not provide any mechanism for kwargs to be passed through to the {{{_construct_forms()}}} call.
    44
    55Also, we may not be able to supply a static unchanging list of kwargs that should be supplied to each form constructor - the kwargs we want to pass may depend upon the specific instance of the form being instantiated.
     
    77I propose the following changes:
    88
    9 Add a form_kwargs argument to BaseFormSet.__init__(). This would be stored on self, and consumed in BaseFormSet._construct_forms()
     9Add a {{{form_kwargs}}} argument to {{{BaseFormSet.__init__()}}}. This would be stored on self, and consumed in {{{BaseFormSet._construct_forms()}}}
    1010
    11 Add a method, BaseFormSet._kwargs_for_form(self, i). This method would be called for each form instantiated, passing the index of the form within the formset. The return value of this method would be merged with the form_kwargs supplied in BaseFormSet.__init__() and used to instantiate the form.
     11Add a method, {{{BaseFormSet._kwargs_for_form(self, i)}}}. This method would be called for each form instantiated, passing the index of the form within the formset. The return value of this method would be merged with the form_kwargs supplied in {{{BaseFormSet.__init__()}}} and used to instantiate the form.
    1212
    1313With these changes, a user could add additional constructor arguments to all forms by passing in form_kwargs to the formset constructor, and could add additional constructor arguments to specific forms by implementing _kwargs_for_form on a derived BaseFormSet class.
    1414
    15 (I found it strange, when BaseFormSet was written, it was clearly intended to be able to pass kwargs to the forms - _construct_form() allows for it, there just is not the plumbing to do so. I worked around this by redefining - copy/pasting - the _construct_forms() method in my derived BaseFormSet class)
     15(I found it strange, when {{{BaseFormSet}}} was written, it was clearly intended to be able to pass kwargs to the forms - {{{_construct_form()}}} allows for it, there just is not the plumbing to do so. I worked around this by redefining - copy/pasting - the {{{_construct_forms()}}} method in my derived {{{BaseFormSet}}} class)
    1616
    1717Patch doesn't have tests or doc changes, will add if this idea gets traction.
Back to Top