HI
I want to align the radio buttons horizontally. By default django forms displays in vertical format.
feature_type = forms.TypedChoiceField(choices =
On my Django 2.2.6 above solutions did not worked well, so I post my solution after many tries and following the breadcrumbs until the django forms widget templates used.
I had to override 2 templates, and heritage my own widget class and then point it.
The modified default django templates have been:
Now they are:
PROJECT_NAME/PROJECT_APP/templates/admin/horizontal_option.html
{% if widget.wrap_label %}{% endif %}
PROJECT_NAME/PROJECT_APP/templates/admin/horizontal_radios.html
{% with id=widget.attrs.id %}
{% endwith %}
class="radio-inline"
at labels, which in default Django had nothingThen you need to create your own widget class:
from django.forms import RadioSelect
class HorizontalRadioSelect(RadioSelect):
template_name = 'admin/horizontal_radios.html'
option_template_name = 'admin/horizontal_inputs.html'
And finally, in my case, I pointed to it overriding formfield_overrides
class attribute in my admin. But you can do this in your models too I think:
formfield_overrides = {
models.BooleanField: {'widget': HorizontalRadioSelect(choices=[(True, "Yes"), (False, "No"), (None, "Unknown")],)},
}