【问题标题】:django-crispy-forms bootstrap 4: How to display checkboxes horizontally?django-crispy-forms bootstrap 4:如何水平显示复选框?
【发布时间】:2021-01-16 09:59:18
【问题描述】:

我似乎无法使用 django-crispy-forms/bootstrap4 让我的 CheckboxSelectMultiple 小部件水平显示。

我试过了: 在表单的小部件上指定它: 小部件 = {'my_field': forms.CheckboxSelectMultiple(attrs={'class': 'form-check-inline'}),}

但复选框仍然垂直显示,并且模板呈现为:

<div class="custom-control custom-checkbox"> <input type="checkbox" class="custom-control-input" name="my_field" id="id_my_field_2" value="2" class="form-check-inline"> <label class="custom-control-label" for="id_my_field_2">

这个“ class="form-check-inline" ”显示为红色。

如果我使用crispy-forms 的助手,也会发生同样的事情。 self.helper.layout = Layout(Field('my_field', css_class="form-check-inline"))

有什么线索吗?有人可以提出替代方案吗?

附言:设置为:CRISPY_TEMPLATE_PACK = "bootstrap4" 模板是: {% csrf_token %} {% load crispy_forms_tags %} {% crispy form form.helper %}

** 编辑 ** 我设法使用以下方法渲染它们:

from django_crispy.bootstrap import InlineCheckboxes
self.helper.layout = Layout(InlineCheckboxes('my_field'))

【问题讨论】:

    标签: django-forms many-to-many django-crispy-forms django-widget twitter-bootstrap-form


    【解决方案1】:
    from crispy_forms.bootstrap import InlineRadios
    
    class DhcpForm(forms.ModelForm):
            cargo = forms.ChoiceField(label='Cargo on Deck',
                              choices=[('true', 'Yes'),
                                       ('false', 'No')]
    def __init__(self, *args, **kwargs):
        self.helper.layout = Layout(
            InlineRadios('cargo', id="radio_id"))
    

    【讨论】:

    • 请提供一些与代码相关的上下文或小解释。
    • 而不是 self.helper.layout = Layout(Field('my_field', css_class="form-check-inline")) 试试这个: self.helper.layout = Layout(InlineRadios('my_field '))
    • 我的意思是编辑你的答案让人们理解它
    • 感谢 Aditi,您的回答适用于单选按钮。我找到了适合我的情况的“InlineCheckboxes”。还对我的问题添加了编辑。虽然无法提供更多上下文...
    猜你喜欢
    • 2019-07-14
    • 2015-08-03
    • 2020-04-13
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    • 2012-04-24
    • 2013-08-01
    • 2015-12-01
    相关资源
    最近更新 更多