Выравнивание переключателей по горизонтали в формах django
привет
Я хочу, чтобы выровнять кнопки по горизонтали. По умолчанию django forms отображается в вертикальном формате.
feature_type = forms.TypedChoiceField(choices = formfields.FeatureType, widget = forms.RadioSelect)
есть ли какой-либо специальный параметр, который мы можем передать для выравнивания переключателей?
спасибо заранее
3 ответов
это поведение RadioField
. Если вы хотите, чтобы он отображался горизонтально, создайте горизонтальный визуализатор, например:
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),
)
модифицированных форм.RadioSelect:
class HorizontalRadioSelect(forms.RadioSelect):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
css_style = 'style="display: inline-block; margin-right: 10px;"'
self.renderer.inner_html = '<li ' + css_style + '>{choice_value}{sub_widgets}</li>'
работа с Python 3.4 со стандартным администратором Django 1.10
и Джанго-костюм(http://djangosuit.com/) (использовать 2 стили Bootstrap В.)
еще не протестирован для Django-grappelli.
по данным документы Django 'attrs' - это словарь, содержащий атрибуты HTML, которые будут установлены в отображаемом виджете.
имея это в виду, простое решение на основе формы будет примерно следующим:
feature_type = forms.TypedChoiceField(
choices = formfields.FeatureType,
widget = forms.RadioSelect(attrs={
'style': 'display: inline-block'
})
)