Opened 9 years ago
Closed 9 years ago
#28060 closed New feature (wontfix)
Add the horizontal radio selection renderer
| Reported by: | Musen | Owned by: | Musen |
|---|---|---|---|
| Component: | Forms | Version: | dev |
| Severity: | Normal | Keywords: | |
| Cc: | Triage Stage: | Unreviewed | |
| Has patch: | no | Needs documentation: | yes |
| Needs tests: | yes | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description
I propose to add the render for horizontal radio selection. When a set of choices is rendered into a radio selection list, Django will list the radio selection vertically by default. People come to trouble when they want to make the radio list horizontal.
I propose to add a Horizontal radio selection render that is similar to
from django.utils.safestring import mark_safe
class HorizontalRadioRenderer(forms.RadioSelect.renderer):
def render(self):
return mark_safe(u'\n'.join([u'%s\n' % w for w in self]))
class ApprovalForm(forms.Form):
approval = forms.ChoiceField(choices=APPROVAL_CHOICES,
initial=0,
widget=forms.RadioSelect(renderer=HorizontalRadioRenderer),
)
This could as solve ticket #28059.
PS. The code for HorizontalRadioRenderer seems to be a folklore on the internet for years, it can be found on *stackoverflow and *UTexas Wiki.
Change History (4)
comment:1 by , 9 years ago
| Owner: | changed from to |
|---|---|
| Status: | new → assigned |
comment:2 by , 9 years ago
| Component: | Uncategorized → Forms |
|---|---|
| Needs documentation: | set |
| Needs tests: | set |
| Type: | Uncategorized → New feature |
| Version: | 1.11 → master |
comment:3 by , 9 years ago
comment:4 by , 9 years ago
| Resolution: | → wontfix |
|---|---|
| Status: | assigned → closed |
I think #28059 will be fixed by restoring the CSS classes on the <ul> that were there before 1.11. Presumably the same solution could be used in other apps. The code in the ticket description no longer words after the introduction of template-based widget rendering in Django 1.11.
Isn't this something that can be achieved by styling the list elements to be displayed horizontally instead?
Just wanted to say I don't think that stripping all the markup is the way to go here.