以django形式水平对齐单选按钮

vkr*_*ams 10 forms django alignment radio-button

您好

我想水平对齐单选按钮.默认情况下,django表单以垂直格式显示.

feature_type  = forms.TypedChoiceField(choices = formfields.FeatureType, widget = forms.RadioSelect)
Run Code Online (Sandbox Code Playgroud)

是否有任何特殊参数可以通过单选按钮对齐?

提前致谢

Lak*_*sad 22

多数民众赞成的行为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),
                                 )
Run Code Online (Sandbox Code Playgroud)

  • 从Django 1.11开始,这给了我一个错误:``forms.RadioSelect.renderer``:"type object'RadioSelect'没有属性'renderer'". (13认同)

小智 6

另一种解决方法是将 ul->li 列表的样式更改为 display:inline-block。你可以做类似的事情

 <style>
 ul#youelementId li{
  display: inline-block;
  }
</style>
Run Code Online (Sandbox Code Playgroud)

希望这对下一位读者有所帮助。


小智 6

我想出了一个替代解决方案。如果您使用 bootstrap 来渲染表单,则可以将 .form-check-inline 类添加到输入中,该字段将水平显示。下面列出的代码显示了我所描述的内容。我希望这可以帮助人们重新发明轮子。谢谢阅读。保重,祝你有美好的一天。

                feature_type = forms.MultipleChoiceField(
                required=False,
                ...
                widget=forms.CheckboxSelectMultiple(attrs={'class': 'form-check-inline'})
                )
Run Code Online (Sandbox Code Playgroud)

该图像显示了一组水平显示的单选按钮。