Как я могу сделать так, чтобы флажки располагались в структуре таблицы, а не только вертикально в Django? - PullRequest
1 голос
/ 30 апреля 2019

У меня есть модель с MultiSelectField, которую я хотел бы видеть в своей форме в виде ряда флажков. Есть много доступных опций, поэтому вместо отображения флажков по вертикали я бы хотел отобразить их в 3 столбцах и 10 строках. Я новичок в хрустящих формах и начальной загрузке, но я думаю, что это был бы лучший способ сделать это. Как я могу использовать их для выполнения этой задачи?

models.py

class Order(models.Model):
    accession_id = models.CharField(max_length=20, primary_key=True)
    MEDICATION_CHOICES = (
        ('ACTIQ', 'ACTIQ'),
        ('HYDROCODONE/APAP', 'HYDROCODONE/APAP'),
        ('OXY IR', 'OXY IR'),
        ('ADDERALL', 'ADDERALL'),
        ('HYDROMORPHONE', 'HYDROMORPHONE'),
        ('PERCOCET', 'PERCOCET'),
        ('ALPRAZOLAM', 'ALPRAZOLAM'),
        ('KADIAN', 'KADIAN'),
        ('PREGABALIN', 'PREGABALIN'),
        ('MSIR', 'MSIR'),
        ('TRAMADOL', 'TRAMADOL'),
        ('ELAVIL', 'ELAVIL'),
        ('NEURONTIN', 'NEURONTIN'),
        ('TYLOX', 'TYLOX'),
        ('EMBEDA', 'EMBEDA'),
        ('NORCO', 'NORCO'),
        ('ULTRAM', 'ULTRAM'),
        ('ENDOCET', 'ENDOCET'),
        ('NORTRIPTYLINE', 'NORTRIPTYLINE'),
        ('VALIUM', 'VALIUM'),
        ('FENTANYL', 'FENTANYL'),
        ('NUCYNTA', 'NUCYNTA'),
        ('VICODIN', 'VICODIN'),
        ('FENTORA', 'FENTORA'),
        ('OPANA', 'OPANA'),
        ('VICOPROFEN', 'VICOPROFEN'),
        ('FLEXERIL', 'FLEXERIL'),
        ('OXECTA', 'OXECTA'),
        ('XANAX', 'XANAX'),
        ('GABAPENTIN', 'GABAPENTIN'),
        ('OXYCODONE', 'OXYCODONE'),
        ('ZOLPIDEM', 'ZOLPIDEM'),
        ('HYDROCODONE', 'HYDROCODONE'),
        ('OXYCONTIN', 'OXYCONTIN'),
    )
    medications = MultiSelectField(choices=MEDICATION_CHOICES)  

forms.py

class OrderForm(forms.Form):
     accession_id = forms.CharField(widget=forms.TextInput(attrs={'autocomplete': 'new-password'}))
    medications = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple, choices=MEDICATION_CHOICES)

HTML

{% extends 'accessioning/base.html' %}

{% load crispy_forms_tags %}

{% block content %}
    <h2>New Order</h2>
     <form method="POST" id="orderForm" data-physicians-url="{% url 'ajax_load_physicians' %}" novalidate>
     {% csrf_token %}
        <div class="">
            <div class="form-group col-md-12">
                {{ form.accession_id|as_crispy_field }}
            </div>
        </div>
        <div>
            <div>
                {{ form.medications|as_crispy_field }}
            </div>
        </div>

        <button type="submit" class="save btn btn-default">Save</button>
    </form>
{% endblock %}
...