Django crispy forms inline checkboxes

Я использую Django-cripsy-forms для создания формы. У меня есть модель с несколькими атрибутами (MultiSelectField) с одинаковыми вариантами выбора (CHOICES).

from django.db import models
class Visit(models.Model):
    CHOICES = (
        ("A","A"),
        ("B","B"),
        ("C","C"),
        ("D","D"),
    )

    q1 = MultiSelectField(null=True, choices=CHOICES, blank=True)
    q2 = MultiSelectField(null=True, choices=CHOICES, blank=True)
    q3 = MultiSelectField(null=True, choices=CHOICES, blank=True)
    q4 = MultiSelectField(null=True, choices=CHOICES, blank=True)
    q5 = MultiSelectField(null=True, choices=CHOICES, blank=True)
    q6 = MultiSelectField(null=True, choices=CHOICES, blank=True)

Я хочу сделать форму с флажками для каждого выбора для всех атрибутов. Но чтобы избежать беспорядка, хочу, чтобы флажки были встроенными. Что-то вроде анкеты (пример ниже)

enter image description here

Я пытался использовать django-crispy-forms InlineCheckboxes, как показано ниже. Но чекбоксы никогда не отображались в строке. Но они отображаются так, как показано на рисунке ниже. Я также попробовал отредактировать стиль меток и входов отдельных чекбоксов, но это также не помогло. Что я делаю не так? И есть ли лучший способ сделать это?

from django import forms
from django.forms import ModelForm
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Layout
from crispy_forms.bootstrap import InlineCheckboxes

class VisitForm(ModelForm):
    class Meta:
        model = Visit
        fields = '__all__'
        widgets = {
            'q1': forms.CheckboxSelectMultiple(),
            'q2': forms.CheckboxSelectMultiple(),
            'q3': forms.CheckboxSelectMultiple(),
            'q4': forms.CheckboxSelectMultiple(),
            'q5': forms.CheckboxSelectMultiple(),
            'q6': forms.CheckboxSelectMultiple(),
        }

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.helper = FormHelper()
        self.helper.layout = Layout (
            InlineCheckboxes("q1"),
            InlineCheckboxes("q2"),
            InlineCheckboxes("q3"),
            InlineCheckboxes("q4"),
            InlineCheckboxes("q5"),
            InlineCheckboxes("q6"),
        )

enter image description here

В html это выглядит следующим образом

<div id="div_id_signal" class="control-group">
    <label for="id_signal" class="control-label">Q1</label>
<div class="controls">
    <label class="checkbox inline" for="id_signal_0">
        <input type="checkbox" name="signal" id="id_signal_0" value="A">
        A
        </label>
</div>
</div>
Вернуться на верх