#23681: NullBooleanSelect should have empty_label or similar
-----------------------------+--------------------
     Reporter:  benjaoming   |      Owner:  nobody
         Type:  New feature  |     Status:  new
    Component:  Forms        |    Version:  master
     Severity:  Normal       |   Keywords:
 Triage Stage:  Unreviewed   |  Has patch:  0
Easy pickings:  1            |      UI/UX:  0
-----------------------------+--------------------
 `NullBooleanSelect` is responsible of making the values 1, 2, and 3 turn
 into None, True or False. That's why having custom "choices" kwarg is
 perhaps a bit over the top. Well, it's pretty meaningless to have a
 utility class if you start passing a choices kwarg that contains half of
 the code that makes up NullBooleanSelect.

 However, I need one small feature from this widget! Namely, that the
 following...


 {{{
 class NullBooleanSelect(Select):
     """
     A Select Widget intended to be used with NullBooleanField.
     """
     def __init__(self, attrs=None):
         choices = (('1', ugettext_lazy('Unknown')),
                    ('2', ugettext_lazy('Yes')),
                    ('3', ugettext_lazy('No')))
         super(NullBooleanSelect, self).__init__(attrs, choices)
 }}}


 ...is changed to:


 {{{
 class NullBooleanSelect(Select):
     """
     A Select Widget intended to be used with NullBooleanField.
     """
     def __init__(self, empty_label=None, attrs=None):
         choices = (('1', empty_label or ugettext_lazy('Unknown')),
                    ('2', ugettext_lazy('Yes')),
                    ('3', ugettext_lazy('No')))
         super(NullBooleanSelect, self).__init__(attrs, choices)
 }}}


 The motivation is that I often leave out labels to have them put as the
 default first option of the Select. An example use:


 {{{
 class MyForm(forms.Form):
     has_payments = forms.NullBooleanField(
         label="",
         required=False,
         widget=NullBooleanSelect(empty_label=_(u"Has previous payments?"))
         help_text=_(u"Only show subscriptions that have previously been
 charged"),
     )

 }}}

 Even more preferable, would be to place the `empty_label` kwarg in
 `NullBooleanField`, as that would match the options for ModelChoiceField.

--
Ticket URL: <https://code.djangoproject.com/ticket/23681>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/053.f9afd42766958380859082eddb4789bc%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to